Passende Collection gesucht

remy

Aktives Mitglied
Hi,

ich brauche ein passende Collection, die mir bei folgendem Szenario helfen kann:

Zur Laufzeit in einem eigenen Thread werden ständig neue Objekte des gleichen Typs hinzugefügt. Zur gleichen Zeit in einem anderen Thread sollen die Objekte nacheinander (in der Reihenfolge des Hinzufügens) wieder ausgelesen werden. Nach dem letzten Element in der Liste soll mit dem ersten wieder begonnen werden.

Nach den Prinzipien der Informatik hätte ich mich direkt für eine zirkuläre einfach verkettete Liste entschieden: über next() würde ich mit dem Pointer die Elemente laufen, zum Speichern wird einfach das nächste Element drangehangen...

Doch die Implementation der LinkedList von Java hilft mir nicht weiter. Lediglich über den Iterator kann ich die Elemente schrittweise durchlaufen, der mir aber eine Exception schmeißt, wenn der Inhalt der Liste geändert wurde. Warum gibt es in der LinkedList nicht einfach eine next()-Methode?

Muss ich mir nun selber was zusammenbasteln oder gibt es eine andere Alternative?

Beste Grüße!
 

remy

Aktives Mitglied
Mh, auch wenn ArrayDeque abgeblich schneller als die LinkedList ist, bringt mich das auch nicht weiter. Auch hier muss die Abfrage über einen Iterator laufen, der es gar nicht gut findet, wenn neue Objekte hinzugefügt werden.
 

nrg

Top Contributor
du musst nie über einen iterator laufen. auch nicht bei einer LinkedList.

ArrayDeque#peek()
bzw.
ArrayDeque#pop()

musst du schauen, ob es passt. wenn du mehrmals drüber willst, vllt auch nicht unbedingt. aber wie gesagt, zwingt dich keiner zum iterator
 
Zuletzt bearbeitet:

remy

Aktives Mitglied
Ja, mit pop() würde mir ein einmaliger Durchlauf gelingen, aber dann geht es nicht mehr weiter. Man könnte zwar die ge-pop()-ten Elemente in einer andere Collection sichern, aber das ist doch auch wieder nur ein Workaround.
 

nrg

Top Contributor
naja fassen wir mal zusammen: for-each und iterator kannst du nicht nehmen, weil du wo anders die collection noch veränderst. stacks/queues auch nicht, weil du mehrmals durchlaufen willst. dann nehm doch einfach eine sync. arraylist oder einen vector und greif über den Index zu bzw. schreib dir einen IndexIterator (glaube nicht, dass es sowas in der SE gibt, vllt aber als lib - wobei das eine Sache von 5 Min. ist). Mehr fällt mir jetzt auch nicht ein...
 

remy

Aktives Mitglied
Ok, hätte nur gedacht, es gibt da schon was angepasstes. Mit Vektoren habe ich noch nicht gearbeitet, vielleicht bekomme ich damit ja was vernünftiges hin.

Vielen Dank für deine Mühe!
 

nrg

Top Contributor
also Vektor nehm ich prinzipiell gar nicht. Habe auch irgendwo mal aufgeschnappt, dass sie inoffiziell Deprecated sein sollen (bzw. das man Sie halt einfach nicht unbedingt nehmen sollte). Wie gesagt, wirds eine synchronisierte ArrayList auch machen. Du kannst genauso auch bei deiner LinkedList bleiben.
 

faetzminator

Gesperrter Benutzer
also Vektor nehm ich prinzipiell gar nicht. Habe auch irgendwo mal aufgeschnappt, dass sie inoffiziell Deprecated sein sollen (bzw. das man Sie halt einfach nicht unbedingt nehmen sollte).
Es ist einfach die alte Version der ArrayList, und man sollte den Vector nur nehmen, wenn man Sachen Thread-save machen muss. Also warum eine syncronized ArrayList erstellen, wenn Vector es bereits ist?
 
S

Spacerat

Gast
Kleiner Tipp: In dem einen Thread, wo nur durchlaufen wird, muß ja eh immer wieder an den Anfang der Liste "gesprungen" werden. Ein guter Zeitpunkt die Original-Liste in eine neue Liste zu Klonen, die man anschliessend nicht mal mehr syncrhonisieren muß.
Java:
public void run()
{
  List<?> threadCopy;
  while(running) {
    synchronized(originalList) {
      threadCopy = originalList.clone();
    }
    for(Object element : threadCopy) {
      //... do something on element
    }
  }
}
 

nrg

Top Contributor
Es ist einfach die alte Version der ArrayList, und man sollte den Vector nur nehmen, wenn man Sachen Thread-save machen muss. Also warum eine syncronized ArrayList erstellen, wenn Vector es bereits ist?

wie gesagt, hatte ich das nur mal aufgeschnappt (ich glaube von Marco). Kann aber jetzt auch nicht mehr genau wiedergeben warum und wieso :)
 
S

Spacerat

Gast
@nrg: Warum kein synchronisierten Vector? Weil dann alle Threads synchronisiert darauf zugreifen müssen und alle irgendwann längere Zeit warten müssen. Wenn man einen synchonisierten Zugriff benötigt, kann man diesen wie oben ganz leicht selbst implementieren. das klappt nun nicht mehr blos bei ArrayList, sondern bei jeder Collection bzw. jeder Map und nicht nur bei Vector. Ich selbst hab auch mal gehört, dass es den Vector blos noch aus Kompatibilitätsgründen gibt. Für die Tatsache, dass er nicht als Deprecated markiert wurde, gab' es afaik auch einen Grund. War glaub' ich sowas banales, wie "Wenn es wirklich nötig ist, alle Zugriffe auf eine Liste zu synchronisieren, kann man schlicht den Vector nehmen."
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Wie finde ich passende Java Klassen & Methoden? Java Basics - Anfänger-Themen 4
M Passende lib? Java Basics - Anfänger-Themen 2
L Tray-Einträge und dazu passende ActionListener dynamisch erzeugen? Java Basics - Anfänger-Themen 2
M Suche passende Datenstruktur Java Basics - Anfänger-Themen 3
G Woher bekomme ich passende .jar-Archive Java Basics - Anfänger-Themen 8
N passende Datenstruktur Java Basics - Anfänger-Themen 3
Encera Garbage Collection Java Basics - Anfänger-Themen 9
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
M Collection.sort sortiert nicht Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
T Collections Geeignete Collection/Liste/Datenbank Java Basics - Anfänger-Themen 17
E Interface List nicht als Collection an erkannt. Java Basics - Anfänger-Themen 14
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
N Collections Werte aus .txt in einer Collection speichern Java Basics - Anfänger-Themen 11
M Collection Aufgabe Java Basics - Anfänger-Themen 22
Arif Collections Unkonstruiertes Objekt einer Collection hinzufügen Java Basics - Anfänger-Themen 2
W Collection-Problem Java Basics - Anfänger-Themen 35
P Klassen In einer Autoklasse das Objekt Auto mittels Collection Speichern Java Basics - Anfänger-Themen 4
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
J Objekt in Collection speichern Java Basics - Anfänger-Themen 4
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
J Collection Objekt Java Basics - Anfänger-Themen 3
T Collections Zusammengehörende Strings in einer Collection Java Basics - Anfänger-Themen 2
S Frage zu Collection-Generics in Subklassen Java Basics - Anfänger-Themen 6
B Collections Collection soll nur einen bestimmten Datentyp aufnehmen Java Basics - Anfänger-Themen 12
B addAll(Collection<? extends E> c) Java Basics - Anfänger-Themen 9
K Collections Collection für 12 mio Strings Java Basics - Anfänger-Themen 7
Y Collection der eigenen Klasse Java Basics - Anfänger-Themen 10
S Collections Welche Collection ist am geeignetsten? Java Basics - Anfänger-Themen 3
G Collections Wahl der richtigen Collection Java Basics - Anfänger-Themen 11
O Frage zu Verständnis von Collection Java Basics - Anfänger-Themen 4
D Scala Iterable zu Java Collection konvertieren Java Basics - Anfänger-Themen 3
D Frage zu Collection und deren Anwendung Java Basics - Anfänger-Themen 2
S Welche Collection kann sich selber sortieren? Java Basics - Anfänger-Themen 8
J Collection soll übergeben werden... Java Basics - Anfänger-Themen 7
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
B Iterator und Collection Java Basics - Anfänger-Themen 11
G Java Collection Frameworks Java Basics - Anfänger-Themen 5
D Collection Konvertieren Java Basics - Anfänger-Themen 7
K Datentypen Über Collection iterieren bringt fehler Java Basics - Anfänger-Themen 8
K OOP Aus Collection Objekte bestimmter Subklassen entfernen Java Basics - Anfänger-Themen 7
S Welche Collection? Java Basics - Anfänger-Themen 5
S Collection rückwärts durchsuchen Java Basics - Anfänger-Themen 4
W Wie kann ich auf Object meiner Collection zugreifen Java Basics - Anfänger-Themen 7
J Collection Vector Java Basics - Anfänger-Themen 8
B Collection während Iteration verändern Java Basics - Anfänger-Themen 7
T Collection in collection Java Basics - Anfänger-Themen 6
T Collection von Objekten verschiedener Klassen Java Basics - Anfänger-Themen 4
J Collection ArrayList und mit erweitertem for iterieren Java Basics - Anfänger-Themen 7
J Probleme mit Collection ArrayList Java Basics - Anfänger-Themen 2
C Collection vs. LinkedList, Abstrakt vs. Konkret Java Basics - Anfänger-Themen 9
G Collection<BufImg> in Datei speichern Java Basics - Anfänger-Themen 8
A Collection auslesen ohne Objekttyp zu kennen? Java Basics - Anfänger-Themen 11
G Collection<Strings> - Liste von Strings verwalten Java Basics - Anfänger-Themen 9
A Struts: Über Collection iterieren mir Taglibs? Java Basics - Anfänger-Themen 13
S Collection<Typ> sort Java Basics - Anfänger-Themen 4
0x7F800000 elemente aus einer Collection korrekt löschen Java Basics - Anfänger-Themen 8
T Frage zu Vererbung beim Collection-Framework Java Basics - Anfänger-Themen 4
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
M Object [][] ist nicht vom Typ Collection? Java Basics - Anfänger-Themen 3
S Collection wie LinkedHashMap Java Basics - Anfänger-Themen 7
J LinkedList, Collection, ArrayList, List. was denn bitte? Java Basics - Anfänger-Themen 6
S Collection Sort Java Basics - Anfänger-Themen 15
A Welche Collection? Java Basics - Anfänger-Themen 13
C Collection in Verbindung mit String.split speicherlastig Java Basics - Anfänger-Themen 20
S Collection in einer Collection Java Basics - Anfänger-Themen 5
A Welche Collection soll ich nehmen? Java Basics - Anfänger-Themen 4
E welche Datenstruktur (Collection) Java Basics - Anfänger-Themen 4
K Collection und Iterator Java Basics - Anfänger-Themen 7
I Bestimmte Variablen in Collection Classes Java Basics - Anfänger-Themen 2
M Source Code von Collection Framework, etc. Java Basics - Anfänger-Themen 3
vogella Cast from Collection.toArray to String[] Java Basics - Anfänger-Themen 2
K Verständnisfrage Collection, ArrayList und Referenzen Java Basics - Anfänger-Themen 4
S Mit Collection<int[]> umgehen Java Basics - Anfänger-Themen 2
S welche collection ? String und object Java Basics - Anfänger-Themen 5
M gibt es eine collection mit definierter maximaler größe Java Basics - Anfänger-Themen 4
G Collection Framework Java Basics - Anfänger-Themen 8
V Mehrdimensionale Collection? Java Basics - Anfänger-Themen 4
U JSTL: Collection auslesen mit forEach Java Basics - Anfänger-Themen 1
A Interface Collection implementieren? Java Basics - Anfänger-Themen 4
I Collection sortieren, ":" höchste "Priorität& Java Basics - Anfänger-Themen 4
P Äquivalent zu Visual Basic Collection Java Basics - Anfänger-Themen 6
G Collection, aber welche? Java Basics - Anfänger-Themen 6
A Collection<String> Java Basics - Anfänger-Themen 4
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
E Strings in Collection Java Basics - Anfänger-Themen 6
R welche Collection nehmen? Java Basics - Anfänger-Themen 4
P Collection Vector speichern mittels Serialisierung? Java Basics - Anfänger-Themen 2
megachucky Collection Vector: ausgabe klappt nicht richtig Java Basics - Anfänger-Themen 9
T Welche Collection nehmen? HashMap? Java Basics - Anfänger-Themen 4
L-ectron-X Speicher freigeben - Garbage Collection Java Basics - Anfänger-Themen 6
P Hilfe gesucht Java Basics - Anfänger-Themen 11
Scappy Java Lernpartner gesucht! Java Basics - Anfänger-Themen 40
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
I Wasserzeichen API gesucht Java Basics - Anfänger-Themen 2
S Anfängeraufgaben gesucht Java Basics - Anfänger-Themen 29
U BestPractise für Deployment unter Windows gesucht Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben