Realmente no recomiendo el uso de (Linked)HashMultiSet
hacer tareas que normalmente se realiza con ArrayList
y (Linked)HashSet
como se mencionó anteriormente OP - es menos legible para el programador Java regular y (probablemente) menos eficiente.
En su lugar, al menos usar constructores de fábrica estáticas como newArrayList
y newLinkedHashSet
para evitar todos estos <T>
s:
private static <T> List<T> removeDuplicate(final List<T> list) {
return Lists.newArrayList(Sets.newLinkedHashSet(list));
}
Sin embargo, puede hacerlo en más "camino de guayaba" - por avoiding nulls y el uso de immutable collections.
Así que si su colección no puede tiene elementos nulos, me gustaría sugerir el uso de immutable set en lugar de mutable and less efficient one:
private static <T> List<T> removeDuplicate(final List<T> list) {
return Lists.newArrayList(ImmutableSet.copyOf(list));
}
Todavía es copiar objetos en dos ocasiones, por lo que consideran ser completamente inmutable y el cambio de método de firma de retorno ImmutableList
:
private static <T> ImmutableList<T> removeDuplicate(final List<T> list) {
return ImmutableSet.copyOf(list).asList();
}
De esta manera sólo hay una copia involucrados, porque ImmutableCollection.asList()
devuelve una vista.
por qué te gusta ir de guayaba, si conjunto básico hace esto? –
y de una manera tan concisa, también – Thilo
@PriyankDoshi ¿por qué no simplemente 'HashSet'? – oldrinb