Freigeben von Teilen von Listen, um das Kopieren zu vermeiden

8

Ich suche nach einer Datenstruktur, die List implementiert und es mir erlaubt der Liste in mehreren Listen wiederzuverwenden .

Um dies zu veranschaulichen, beachten Sie die folgenden drei Listen:

Wie Sie sehen, werden die rote Sequenz ( 42, 88, 76, 60 ) und die blaue Sequenz ( 21, 9, 47 ) mehrfach verwendet, wobei jede eine unabhängige Liste darstellt, die als Teil anderer Listen freigegeben ist. In Wirklichkeit könnten die Listen viel länger sein.

Die Liste muss nur schreibgeschützt sein, da sie als Rückgabewert verwendet wird. Die Prozedur, mit der die Auflistung der Listen erstellt wird, ist die einzige, die die Liste ändern darf (verwenden Sie add(..) -Operationen usw.). Durch das Teilen von Teilen der Listen wird es überflüssig, Listenelemente mithilfe von addAll(..) (das intern System.arraycopy(..) verwendet) expansiv zu kopieren.

Gibt es irgendwelche Light-Weight List Implementierungen da draußen, um meine Bedürfnisse zu erfüllen? Oder gibt es einen relativ einfachen Weg, um mich selbst zu implementieren?

    
Frithjof 09.02.2016, 20:41
quelle

1 Antwort

2

Für Iterable , Set und Multiset , Guava haben Sie mit Iterables.concat() , Sets.union() und Multisets.sum() jeweils. Lists fehlt leider die entsprechende Methode .

    
Douglas 09.02.2016 21:49
quelle

Tags und Links