2014-10-25 4 views
13

Ich verwende SubList-Funktion für ein Objekt vom Typ List. Das Problem ist, dass ich RMI benutze und da die Java Sublist von java.util.ArrayList von einer nicht serialisierbaren Klasse implementiert wird, habe ich die oben beschriebene Exception, wenn ich versuche, das resultierende Objekt an eine entfernte Funktion zu übergeben auch. Ich habe gesehen, dass ich die resultierende Liste in eine neue LinkedList oder ArrayList kopieren und übergeben soll.

Kennt jemand eine Funktion, die dazu beiträgt, das zum Beispiel so einfach zu machen?

List<String> list = originalList.subList(0, 10); 
+4

Sie können eine Liste sehr einfach kopieren. Der ArrayList-Konstruktor akzeptiert eine vorhandene Auflistung (einschließlich Ihrer Unterliste) als Argument und führt eine Kopie aus. – Afforess

+0

@Afforess hat meine Antwort gestohlen. Kopieren Sie es einfach in eine Liste, von der Sie wissen, dass sie serialisierbar ist. – markspace

+0

Ok, thnaks, das habe ich mit einer ArrayList gemacht !! – Othmane

Antwort

4

Die Lösung war einfach dieser Code:

ArrayList<String> list = new ArrayList<String>(); 
list.addAll(originalList.subList(0, 10)); 
+2

Die andere vorgeschlagene Lösung ist besser, weil sie die volle Größe einmal vorbelegt, anstatt möglicherweise die Standardgröße zuzuweisen und dann den Platz für die Unterliste neu zuzuweisen, während die Elemente hinzugefügt werden. –

21

Es ist, weil, List zurück von subList() -Methode eine Instanz von 'RandomAccessSubList' ist, die nicht serialisierbar ist. Daher müssen Sie ein neues ArrayList-Objekt aus der von subList() zurückgegebenen Liste erstellen.

ArrayList<String> list = new ArrayList<String>(originalList.subList(0, 10)); 
Verwandte Themen