davvero consiglia di non utilizzare (Linked)HashMultiSet
fare compito che di solito è fatto con ArrayList
e (Linked)HashSet
come OP di cui sopra - È meno leggibile per i normali programmatori Java e (probabilmente) meno efficiente.
Invece, almeno usare costruttori di fabbrica statici come newArrayList
e newLinkedHashSet
per evitare tutti questi <T>
s:
private static <T> List<T> removeDuplicate(final List<T> list) {
return Lists.newArrayList(Sets.newLinkedHashSet(list));
}
Tuttavia, si può fare in più "modo Guava" - da avoiding nulls e utilizzando immutable collections.
Quindi, se la vostra collezione non può avere elementi nulli, suggerirei usando immutable set invece di mutable and less efficient one:
private static <T> List<T> removeDuplicate(final List<T> list) {
return Lists.newArrayList(ImmutableSet.copyOf(list));
}
E 'ancora la copia di oggetti per due volte, in modo da prendere in considerazione essendo completamente immutabile e cambiando il metodo di firma per il ritorno ImmutableList
:
private static <T> ImmutableList<T> removeDuplicate(final List<T> list) {
return ImmutableSet.copyOf(list).asList();
}
In questo modo v'è una sola copia coinvolti, perché ImmutableCollection.asList()
restituisce la vista.
perché ti piace andare per guava, se insieme di base fa questo? –
e in modo così sintetico, anche – Thilo
@PriyankDoshi perché non solo 'HashSet'? – oldrinb