Suponga que desea compilar una copia de un objeto ImmutableSet
/List
/ pero filtra algunas de las entradas originales. Una forma de implementar que es la siguiente:Google Collections (Guava Libraries): ImmutableSet/List/Map and Filtering
ImmutableList.copyOf(Iterables.filter(myObject, myObject.EQUALS));
donde myObject.EQUALS
es un predicado para la operación Iterables.filter()
. Creo que esta es una implementación bastante elegante y fácil de leer. Sin embargo, uno crea dos objetos de lista (primero a través de la llamada Iterables.filter(...)
, la segunda a través del ImmutableList.copyOf(...)
) que es muy ineficiente.
¿Alguien sabe de una manera más eficiente de hacerlo?
supongo que lo mejor sería añadir predicados de filtro para los ImmutableSet
/List
/Map
constructores de modo que el objeto debe ser construido sólo una vez. Pero desafortunadamente no hay tal parámetro.
Quizás pueda usar Predicates.equalTo() en lugar de implementarlo :) –
Gracias por la pista ;-) – danbim