Java >> Programma Java >  >> Tag >> String

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)

Etichetta Java