C'è un modo migliore per combinare due set di stringhe in Java?
Da un Set
non contiene voci duplicate, puoi quindi combinare le due:
newStringSet.addAll(oldStringSet);
Non importa se aggiungi le cose due volte, il set conterrà l'elemento solo una volta... ad esempio non è necessario controllare usando contains
metodo.
Puoi farlo usando questo one-liner
Set<String> combined = Stream.concat(newStringSet.stream(), oldStringSet.stream())
.collect(Collectors.toSet());
Con un'importazione statica sembra ancora più bello
Set<String> combined = concat(newStringSet.stream(), oldStringSet.stream())
.collect(toSet());
Un altro modo è usare il metodo flatMap:
Set<String> combined = Stream.of(newStringSet, oldStringSet).flatMap(Set::stream)
.collect(toSet());
Inoltre qualsiasi collezione può essere facilmente abbinata con un unico elemento
Set<String> combined = concat(newStringSet.stream(), Stream.of(singleValue))
.collect(toSet());
Lo stesso con Guaiava:
Set<String> combinedSet = Sets.union(oldStringSet, newStringSet)