16 Stimmen

Fügen Sie eine Liste in ein HashSet mit addAll hinzu

In Java kann ich mit der HashSet addAll-Methode keine Liste zu einem HashSet hinzufügen

List a = new ArrayList();
a.add(20);

List b = new ArrayList();
b.add(30);

Set set = new HashSet ( a );

set.addAll( b);

Bitte hilf mir

Danke

21voto

Mark Byers Punkte 761508

Ich habe deinen Code ausprobiert und er funktioniert für mich.

Eines sollte jedoch beachtet werden - es wäre besser, die generischen Versionen der Sammlungen zu verwenden. Dadurch werden die Warnungen entfernt.

List a = new ArrayList();
a.add(20);

List b = new ArrayList();
b.add(30);

Set set = new HashSet(a);
set.addAll(b);

3voto

himani1349 Punkte 111

Dies funktioniert gut, nur dass, wenn Sie eine Liste zum Satz hinzufügen, die wiederholten Elemente zwischen der Liste und dem Satz nur einmal hinzugefügt werden.

Angenommen, ArrayList arr hat die Elemente 2,3,4 und HashSet set die Elemente 2,5,7 jetzt, wenn Sie set.addAll(arr) machen, dann enthält set immer noch 2,5,7,3,4.

Stellen Sie sich auch ein Szenario vor, in dem Sie eine ArrayList arr und HashSet set haben, wobei T eine generische Klasse ist, die mehrere Parameter enthält, dann werden gemeinsame Elemente im endgültigen Satz gemäß der überschriebenen Definition der equals-Methode in der T-Klasse entfernt und das Element, das dem Satz hinzugefügt wird, wird im endgültigen Satz über dem Element in der Arraylist beibehalten.

0voto

Sie können einfach so machen:

Set set = new HashSet(list);

0voto

    ArrayList arr = new ArrayList<>();
    arr.add(20);
    arr.add(30);
    arr.add(40);
    System.out.println(arr); //[20, 30, 40]

    ArrayList arr2 = new ArrayList<>();
    arr2.add(10);
    arr2.add(70);
    arr2.add(40);

    System.out.println(arr2); //[10, 70, 40]
    arr2.addAll(arr);

    System.out.println(arr2); //[10, 70, 40, 20, 30, 40]

    HashSet set = new HashSet<>(arr);
    System.out.println(set); //[20, 40, 30]
    set.addAll(arr2);
    ArrayList dummy = new ArrayList<>(set);

    System.out.println(dummy); //[20, 70, 40, 10, 30]

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