List retainerAlle Ausnahme

7

Ich wollte testen, wie man eine Kreuzung zwischen zwei Listen bekommt, hier ist mein Code:

%Vor%

Dies erzeugt:

%Vor%

Aber ich mache keine Entfernungen. Warum produziert diese Ausnahme?

Update I:

Verwenden:

%Vor%

Produziert:

%Vor%

Da list2 von list1 unterstützt wird, verursacht das Entfernen von Elementen aus list1 diese Ausnahme. Endlich funktionierende Version:

%Vor%

oder

%Vor%

oder

%Vor%

Danke für Ihre Antworten alle.

    
Gandalf StormCrow 10.05.2012, 20:30
quelle

5 Antworten

16

Wenn Sie Arrays.asList verwenden, erhalten Sie eine Liste, die vom tatsächlichen Array mit eingeschränkter Funktionalität unterstützt wird. Wenn Sie eine vollständig änderbare Liste wünschen, müssen Sie eine neue Liste erstellen. Zum Beispiel:

%Vor%     
ataylor 10.05.2012, 20:34
quelle
3

Als Dokumentation sagt die Methode List.retainAll()

  

Behält nur die Elemente in dieser Liste bei, die in der angegebenen Sammlung enthalten sind (optionale Operation). Mit anderen Worten, entfernt alle Elemente, die nicht in der angegebenen Sammlung enthalten sind. [Betonung meiner]

    
Attila 10.05.2012 20:34
quelle
1

retainAll entfernt Elemente aus der Liste, auf der es aufgerufen wird.

    
GriffeyDog 10.05.2012 20:32
quelle
0

retainAll entfernt alle Elemente, die nicht in der angegebenen Liste sind.

    
Christopher Oezbek 10.05.2012 20:33
quelle
0

Die Dokumentation besagt auch, dass retainerAll UnsupportedOperationException auslöst, wenn die Listenimplementierung diese Methode nicht unterstützt.

    
user1387886 10.05.2012 20:38
quelle

Tags und Links