Welche Collection ist die richtige ? Listen mergen

Status
Nicht offen für weitere Antworten.

little_b

Mitglied
Hallo,

Ich habe 2 Listen in die ich zusammenfügen (mergen) möchte.

Beispiel :

Liste A Object :
absolutePath (1)
serverDate (2)

Liste B Object :
absolutePath (1)
clientDate (3)

?Collection? AB Object :
absolutePath (1)
serverDate (2)
clientDate (3)


Das Object kommt nur einmal vor, wobei absolutePath der Key sein koennte.
Ist es in beiden Listen vorhanden, so wird ein AB Object daraus erzeugt.
Ist es nur in einer Liste vorhanden so wird auch ein AB Object daraus erzeugt
und nicht vorhandene Daten bleiben null.

TreeMap ist vorsortiert, keine Ahnung ob das wirklich ist was ich brauche.
Zum überprüfen ob es schon vorhanden ist wäre es vielleicht gut.
Ich möchte es später in einem JTable sortiert anzeigen lassen, aber ich
habe hier in der FAQ gelesen, das eine nachträgliche Sortierung besser
ist.
Ich weiss nicht wie effizient HashMap ist. Oder vielleicht doch eine Liste?

Es handelt sich dabei um maximal so an die 100.000 Objekte. Wobei ein
Objekt noch so 3-4 Attribute mehr hat als hier aufgeführt.


dank vorab,

basti
 

Marco13

Top Contributor
Hi

Die Frage "HashMap oder Liste" ist imho etwas unsinnig. Bei einer Map werden Objekte auf andere Objeke abgebildet. Bei einer List stehen die Objekte nur hintereinander drin. Eine Alternative wäre noch eine Set (HashSet), wo sichergestellt ist, dass jedes Objekt nur einmal vorkommt.

Wo du das Ergebnis dann hinschreibst, ist aber eigentlich egal. Entscheidend ist, dass du zu jedem Objekt aus A schnell das passende Objekt aus B findest. Du könntest den Inhalt der Liste B dazu in eine HashMap einfügen, die den String (abolutePath) aus das jeweilige Objekt mappt.
Code:
List<Content> listA = ...
List<Content> listB = ...

HashMap<String, Content> mapB = new HashMap<String, Content>();
for (Content c : listB)
{
    mapB.put(c.getAbsolutePath(), c);
}

List<Content> result = new ArrayList<Content>();
for (Content cA : listA)
{
    // Hole aus der listB das Objekt cB, das den gleichen abolutePath hat, wie cA 
    Content cB = mapB.get(cA.getAbsolutePath();

    // Erstelle ein Content-Objekt, das alle Info's enthält, die
    // mindestens in einem der beiden Objekte enthalten sind
    // (cB kann auch null sein!)
    result.add(new Content(cA, cB));
}

bye
 

Zunera

Aktives Mitglied
Hallo little_b,

[edit: korrigierter Text - sorry vonwegen der Verwirrung]
also ich wüßte jetzt nicht, was gegen eine TreeMap spricht, sie scheint mir für dein Anliegen bestens geeignet, denn im Gegensatz zu einer Liste braucht eine TreeMap nur O(log n) Operationen zum Auffinden von vorhandenen Objekten, während in einer Liste die gesamte Liste bis zum gefundenen Objekt durchlaufen wird.
Also angenommen, es sind 10.000 Objekte in einer Liste, also braucht es im Durchschnitt 5.000 Vergleiche (MAX 10.000), bis das gewünschte Objekt gefunden ist, bei einer TreeMap mit ebensovielen Objekten MAXIMAL 14 Vergleiche!
Bei Listen KANN das Einsortieren wiederum effizienter sein, da ein Objekt einfach nur ans Ende (oder den Anfang) der Liste gehängt wird - bei einer TreeMap wird das Objekt (wiederum mit max. 14 Vergleichen) einsortiert (bei gleichem Beispiel).

Viele Grüße

[edit: HashMaps können bei guten Hashfunktionen günstiger sein]
 

little_b

Mitglied
Erstmal vielen Dank.

So wie ich das verstanden habe ist es bei meinem Problem schon wichtig
zwischen einer Liste und einer HashMap zu unterscheiden.

Der Vorteil gegenüber einer Liste ist das ich beim Zusammenfügen viel
Zeit spare. Ich müsste eine Liste einmal komplett durchlaufen um
nach zuschauen ob das Element schon vorhanden ist, hingegen ich bei
einer HashMap im Idealfall einen Suchzugriff von eins habe.

Ich habe mich für die HashMap entschieden und sortiere das später.

danke :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Welche Collection verwenden? Allgemeine Java-Themen 4
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
P Feststellen, Welche Classes ich aus einem JAR nutze? Allgemeine Java-Themen 6
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
F Java Web App - welche Technologien? Allgemeine Java-Themen 11
S Welche API? Allgemeine Java-Themen 6
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
K Welche Zertifizierung passt? Allgemeine Java-Themen 10
A Variable, welche Exeption wirft als "Global" deklarieren Allgemeine Java-Themen 13
J Videokonferenz mittel Java ? Welche Möglichkeiten habe ich ? Allgemeine Java-Themen 2
J Welche Layouts benutzt ihr? Allgemeine Java-Themen 2
G Wiedereinstieg, welche Java Version empfehlt ihr Allgemeine Java-Themen 7
M Welche Exceptionbehandlung ist sinnvoll? Allgemeine Java-Themen 3
H NetBeans geotools 15 oder 16 - welche Abhängingkeiten gibt es? Welche Jars brauche ich? Allgemeine Java-Themen 4
S Welche Java Techologien gibt es fürs Frontend Allgemeine Java-Themen 4
S Welche Nutzen bringen Lamda Expressions? Allgemeine Java-Themen 1
M Welche Umgebung und Frameworks für mich als Umsteiger Allgemeine Java-Themen 6
C Welche Styleconvention Allgemeine Java-Themen 0
ruutaiokwu datenstruktur welche sich "im kreis" dreht Allgemeine Java-Themen 26
R LinkedList und Threads - welche Methode ist besser? Allgemeine Java-Themen 2
F Welche Systeme für hoch skalierbare Webanwendung? Allgemeine Java-Themen 7
Landei Welche Klassen fehlen im JDK? Allgemeine Java-Themen 18
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
G Welche Datenstruktur? Allgemeine Java-Themen 19
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
R Welche waren eure ersten Projekte? Allgemeine Java-Themen 10
G Wie kann man sehen, welche Applikationen mit java arbeiten? Allgemeine Java-Themen 17
L Social Media Webportal -> Welche Technologie (JEE, GWT) Allgemeine Java-Themen 8
J Welche Informationen werden beim Kompilieren gespeichert? Allgemeine Java-Themen 3
S Welche Datenstruktur für verschiedene Sprachen sinnvoll? Allgemeine Java-Themen 2
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
vladimir Welche API für Grafik und Drag&Drop Allgemeine Java-Themen 3
schlingel Plugin-Architektur - Welche nehmen? Allgemeine Java-Themen 6
U Welche 2D-API? Allgemeine Java-Themen 4
S Vererbung: Welche Methode wird verwendet? Allgemeine Java-Themen 9
M Welche Dateiformate kann Java einlesen?? Allgemeine Java-Themen 26
E Neues Projekt - Welche GUI / IDE /Techniken / etc. Allgemeine Java-Themen 14
E Welche Icons für sichtbar /unsichtbar Allgemeine Java-Themen 2
J Welche Lösung für Servlets und JSPs in Eclipse? Allgemeine Java-Themen 5
N Für welche Art von Berechnungen macht JCUDA Sinn? Allgemeine Java-Themen 12
A Welche Exception verwenden? Allgemeine Java-Themen 2
T Welche Art von Hilfe?? Allgemeine Java-Themen 5
N welche run.bat? Allgemeine Java-Themen 3
R Assoziativer Speicher welche Unterschiede? Allgemeine Java-Themen 5
Developer_X Welche Dateien kann Java laden? Allgemeine Java-Themen 9
G Welche Schreibeweise ist richtig Allgemeine Java-Themen 16
ARadauer welche java version wird benutzt Allgemeine Java-Themen 4
E Welche Java-Version kennt isEmpty() ? Allgemeine Java-Themen 2
F Welche dicken Java-Bücher kennt ihr? Allgemeine Java-Themen 31
M Prüfen, welche anderen Programme laufen Allgemeine Java-Themen 5
K [erledigt] JVM welche läuft Allgemeine Java-Themen 9
G synchronized-Sclüsselwort: welche Reihenfolge zum Betreten? Allgemeine Java-Themen 6
E welche standalone Version von Tomcat benutzen? Allgemeine Java-Themen 6
S Welche Speicherung von Daten bei Kalendarfunktion der jtable Allgemeine Java-Themen 7
F welche Datenstruktur? Allgemeine Java-Themen 9
A feststellen, welche Klassen ein Interface implementieren Allgemeine Java-Themen 3
P welche jar enthält was? Allgemeine Java-Themen 5
F Welche Datenstruktur Allgemeine Java-Themen 2
V Welche Oberfläche empfehlt ihr mir? Allgemeine Java-Themen 19
Z Welche Datenstruktur verwende ich h_ier bloss ? Allgemeine Java-Themen 14
S Welche jar's werden wirklich benötigt?` Allgemeine Java-Themen 5
G Dateien löschen welche vor heute erstellt wurden? Allgemeine Java-Themen 7
G Prüfen welche JRE-Version gebraucht wird Allgemeine Java-Themen 19
I Welche Möglichkeiten bietet Java um Records in Dateien zu sp Allgemeine Java-Themen 10
B Drucken - welche Bibliothek favorisiert Ihr? Allgemeine Java-Themen 16
J Welche Daten für Ative-X Funktion? Allgemeine Java-Themen 5
P welche java version für javax.mail? Allgemeine Java-Themen 7
B Erkennen welche Objekte den Heap verbrauchen? Allgemeine Java-Themen 2
B Welche Java-Version? Allgemeine Java-Themen 7
S Welche Javaversion ist in meinem Linux? Allgemeine Java-Themen 2
M 2 Javaversionen welche aktiv? Allgemeine Java-Themen 3
C Datumsfelder auslesen - egal welche Zeitzone Allgemeine Java-Themen 2
F SuppressWarnings("xxx") - welche Möglichkeiten gib Allgemeine Java-Themen 4
R Welche Exception bei write() nehmen Allgemeine Java-Themen 7
reibi JVM fragen welche Apps geladen sind Allgemeine Java-Themen 7
S Welche Datenstruktur passt bei mir? Allgemeine Java-Themen 6
D Welche Datenstruktur? Allgemeine Java-Themen 2
B Grafische Oberfläche - Welche Komponenten? Allgemeine Java-Themen 5
T JMF, welche Codecs gibts, und vor allem, wo? Allgemeine Java-Themen 9
H Welche Scriptsprache verwendet ihr in Java Allgemeine Java-Themen 9
G Welche Referenzsoftware ist in Java geschrieben? Allgemeine Java-Themen 8
Rakshan Generic reading of XML document from the root tag into an Collection Allgemeine Java-Themen 0
JavaJüngling beliebige Collection die Comperable Elemente enthält als Parameter Allgemeine Java-Themen 37
W Collections Suche Collection, um Strings mit Indizees versehen Allgemeine Java-Themen 47
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
Y String-Collection: längste gemeinsame Strings / Prefixe Allgemeine Java-Themen 3
S Probleme mit Collection Allgemeine Java-Themen 7
S Passende Java Collection Allgemeine Java-Themen 5
D Eigene/r Collection/Container Allgemeine Java-Themen 3
K Collections Collection<> mit List<String> abgleichen? Allgemeine Java-Themen 10
D Beste Collection für Integer Allgemeine Java-Themen 4
H JPA (EclipseLink) Neuer Eintrag in Collection speichern (unidirektional) Allgemeine Java-Themen 3
M Collections Typ Variable einer generischen Collection ? Allgemeine Java-Themen 4
T Garbage Collection Frage Allgemeine Java-Themen 15
H Datentypen Collection für SQL-Datentypen Allgemeine Java-Themen 2
M collection persistence system Allgemeine Java-Themen 4
K associate collection with two open sessions Allgemeine Java-Themen 12

Ähnliche Java Themen


Oben