Presentando algunos de los beneficios de las operaciones de recopilación en nuestra base de código sin agregar una nueva dependencia de biblioteca externa, estamos agregando estos métodos a nuestro paquete de utilidades.Nombrar extensiones de colección para mayor claridad
static public List<T> filter(List<T> source, Predicate<T> filter);
static <Y,T> public List<Y> transform(List<T> source, Mutator<Y,T> filter);
static public boolean exists(List<T> source, Predicate<T> filter);
static public T findFirst(List<T> source, Predicate<T> filter);
static public boolean trueForAll(List<T> source, Predicate<T> filter);
Con las interfaces concomitantes
public interface Predicate<T> { public boolean apply(T item); }
public interface Mutator<T,Y> { public Y apply(T item); }
Así que las preguntas:
- son los filtros de un buen nombre para la clase que contiene las extensiones? Si no, ¿mejor?
- ¿El mutador < T, Y> recibe el nombre apropiado?
- ¿Debo prefieren mapa a transformada y reducir a filtro?
- ¿Hay alguna función importante basada en conjuntos que he olvidado incluir en la clase de la biblioteca?
Editado para agregar: Un argumento importante que tengo contra mapa (y por lo tanto a favor de transformar) es que mapa tiene carga semántica significativa debido a los muchos usos para java.util.Map
Gracias, ya que estoy acostumbrado a pensar en los genéricos CLR en lugar de los genéricos JDK5, definitivamente es un buen punto. –