787 Stimmen

Der einfachste Weg, eine Liste in eine Menge in Java zu konvertieren

Wie konvertiert man am einfachsten eine List zu einer Set in Java?

6voto

shabunc Punkte 20350

Vergessen wir nicht unseren relativ neuen Freund, java-8 Stream-API. Wenn Sie eine Liste vorverarbeiten müssen, bevor Sie sie in eine Menge umwandeln, ist es besser, etwas zu haben wie:

list.stream().<here goes some preprocessing>.collect(Collectors.toSet());

5voto

Nirbhay Rana Punkte 3923

Der beste Weg zur Verwendung des Konstruktors

Set s= new HashSet(list);

In Java 8 können Sie auch stream api: verwenden:

Set s= list.stream().collect(Collectors.toSet());

5voto

savanibharat Punkte 109

Sie können konvertieren List<> a Set<>

Set<T> set=new HashSet<T>();

//Added dependency -> If list is null then it will throw NullPointerExcetion.

Set<T> set;
if(list != null){
    set = new HashSet<T>(list);
}

0 Stimmen

Ich glaube, Sie meinten, es von der Liste in den Satz zu übertragen.

4voto

Shenal Silva Punkte 1745

Eine Java 8-tauglichere Lösung mit Optional.ofNullable

Set<Foo> mySet = Optional.ofNullable(myList).map(HashSet::new).orElse(null);

4voto

akhil_mittal Punkte 20953

Es gibt verschiedene Möglichkeiten, eine Set als:

    List<Integer> sourceList = new ArrayList();
    sourceList.add(1);
    sourceList.add(2);
    sourceList.add(3);
    sourceList.add(4);

    // Using Core Java
    Set<Integer> set1 = new HashSet<>(sourceList);  //needs null-check if sourceList can be null.

    // Java 8
    Set<Integer> set2 = sourceList.stream().collect(Collectors.toSet());
    Set<Integer> set3 = sourceList.stream().collect(Collectors.toCollection(HashSet::new));

    //Guava
    Set<Integer> set4 = Sets.newHashSet(sourceList);

    // Apache commons
    Set<Integer> set5 = new HashSet<>(4);
    CollectionUtils.addAll(set5, sourceList);

Wenn wir die Collectors.toSet() wird eine Menge zurückgegeben und wie im Dokument beschrieben: There are no guarantees on the type, mutability, serializability, or thread-safety of the Set returned . Wenn wir eine HashSet dann können wir die andere Alternative verwenden, um eine Menge zu erhalten (siehe set3 ).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X