Wie man eine gültige Unterliste in Java?
Habe ich dieses komische (ich denke) problem in Java.
Ich habe ein ArrayList und möchte ich eine Unterliste.
Aber ich bekomme die Folgen Ausnahme.
package javatest;
import java.util.ArrayList;
public class JavaTest {
public static void main(String[] args) {
ArrayList<Integer> alist = new ArrayList<Integer>();
alist.add(10);
alist.add(20);
alist.add(30);
alist.add(40);
alist.add(50);
alist.add(60);
alist.add(70);
alist.add(80);
ArrayList<Integer> sub = (ArrayList<Integer>) alist.subList(2, 4);
for (Integer i : sub)
System.out.println(i);
}
}
run: Exception in thread "main"
java.lang.Classcastexception-Fehler:
java.util.RandomAccessSubList nicht
sein cast auf java.util.ArrayList an
javatest.JavaTest.main(JavaTest.java:17)
Java Result: 1
Was ist der richtige Weg, um eine Unterliste?
Thx
InformationsquelleAutor der Frage George Kastrinis | 2011-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie arbeiten mit den Schnittstellen für Sammlungen, wo immer möglich. Du bist downcasting das Ergebnis der subliste, aber die API gibt an, dass es zurück
List
(nichtArrayList
). Hier die implementors wählen, um zurückzukehren, eine andere Art zu machen Ihr Leben einfacher.Darüber hinaus werden die API-Dokumentation gibt an, dass Teilliste zurückgeben wird eine Liste zugeordnet, die auf das original, also Vorsicht!
InformationsquelleAutor der Antwort stevevls
machen es so :
und es sollte funktionieren
InformationsquelleAutor der Antwort SwapnilM
Versuchen, diese...
InformationsquelleAutor der Antwort Karl-Bjørnar Øie
Versuchen
InformationsquelleAutor der Antwort Thor
wie bei der ArrayList - impl, es ist return-Liste,wie @George Kastrinis sagte verwenden
Schnittstelle, wo immer möglich.
InformationsquelleAutor der Antwort zg_spring
Ändern Sie den code:
Den
sublist()
Methode gibt eineList
die nicht unbedingt eineArrayList
(hier ist es tatsächlich einRandomAccessSublist
das ist der Grund, warum der cast fehlschlägt).InformationsquelleAutor der Antwort helpermethod