Konvertieren einer Unterliste einer ArrayList in eine ArrayList
Im mit eine ArrayList und im Versuch, zu kopieren, ein Teil davon zu einem anderen ArrayList daher im mit:
sibling.keys = (ArrayList<Integer>) keys.subList(mid, this.num);
Wo "Geschwister.Schlüssel" ist der neue ArrayList und "Tasten oder.Schlüssel" ist der ältere ArrayList.
Verwendet habe ich das casting, weil eclipse mir zu tun, aber es wirft dann ein ClassCastException
:
java.util.ArrayList$Teilliste kann nicht gewirkt werden, um java.util.ArrayList
Irgendwelche Ratschläge?
InformationsquelleAutor der Frage yoavgray | 2013-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
subList
gibt eine Ansicht auf eine vorhandene Liste. Es ist nicht eineArrayList
. Sie können erstellen Sie eine kopieren:Oder wenn Sie glücklich sind, mit der Ansicht Verhalten, versuchen Sie, ändern Sie die Art der
sibling.keys
nurList<Integer>
stattArrayList<Integer>
so dass Sie nicht brauchen, um die Kopie:Ist es wichtig, dass Sie verstehen den Unterschied, aber sind Sie gehen zu mutieren
sibling.keys
(z.B. hinzufügen von Werten oder ändern von bestehenden Elementen)? Gehen Sie zu mutierenkeys
? Möchten Sie die mutation einer Liste, den anderen zu beeinflussen?InformationsquelleAutor der Antwort Jon Skeet
Erhalten Sie die class cast exception, weil Sie erwarten, dass eine ArraList während der ArrayList.Unterliste()keine return ArrayList.
Ändern Ihre Geschwister.Schlüssel von ArrayList zu Listund sollte funktionieren. Dadurch wird vermieden, classcastexception-Fehler so gut wie Sie nicht brauchen, um jede Umwandlung.
InformationsquelleAutor der Antwort Ankur Shanbhag
Array.subList
zurück nicht eineArrayList
aber einList
.Also die folgende Zeile funktioniert :
Beachten Sie, dass der cast ist optional.
InformationsquelleAutor der Antwort obourgain