ArrayList, HashMap oder was sonst?

Status
Nicht offen für weitere Antworten.

magic_halli

Bekanntes Mitglied
Hi,

ich ermittle mir zur Laufzeit verschiedene Variablen zu einem "Datensatz". Dies alles möchte ich erstmal wegspeichern und am besten danach noch sortieren (mittels Comparator vielleicht?!), um dann bspw. auf die ersten 3 sortierten Einträge zurückzugreifen und damit zu arbeiten.
Die Speicherung sollte zeilenweise (1Zeile = 1Datensatz) erfolgen, also etwa so:
A var1 var2 var3 var4 var5
A ist hierbei ein String und die var´s double-Werte.
Nun steh ich vor der Entscheidung, welche Methode ich am Besten anwenden soll, um:
1. relativ unkompliziert eine Sortierung der gespeicherten Daten vorzunehmen
2. einfach und schnell auf die Datensätze wieder zurückzugreifen und auszulesen.

Ist hierfür eine ArrayList eine gute Lösung, oder besser mit HashMap??? ...wobei, HashMap kann doch nur 2 Werte (Key,Value) pro Zeile speichern, oder?

Was meint ihr dazu?
 

KimKaze

Aktives Mitglied
bei einer hashmap hast du den vorteil das die suche nach dem Inhalt wesentlich einfacher und schneller als beim array geht, außerdem musst du bei dem array die länge von vorn herein festlegen wärend die hashmap flexibel in größe und länge ist.
wie es mit der sortierung aussieht weiss ich nicht genau, kann mir aber nicht vorstellen das es da große unterschieden gibt.. ich würde dir die hashmap empfehlen.
 

Murray

Top Contributor
Was meinst du mit "einfach und schnell auf die Datensätze wieder zurückzugreifen und auszulesen"? Wie willst du auf die Datensätze zugreifen? Anhand ihrer Position der Sortierreihenfolge? Oder anhand der Inhalte( "Gibt mir den Datensatz, bei dem A den Wert 'xyz' hat")?
 

thomator

Bekanntes Mitglied
Also ich denke mal, hashmap + array ist hier angesagt. Pro Eintrag nimmt ein Array die Werte auf und wird in der HashMap namensindiziert referenziert.
 

Murray

Top Contributor
KimKaze hat gesagt.:
außerdem musst du bei dem array die länge von vorn herein festlegen wärend die hashmap flexibel in größe und länge ist.
Für Arrays stimmt das; gefragt war aber nach einer ArrayList - und die ist bzgl. der Länge ebenso flexible wie die HashMap.
 

magic_halli

Bekanntes Mitglied
Wie willst du auf die Datensätze zugreifen? Anhand ihrer Position der Sortierreihenfolge? Oder anhand der Inhalte( "Gibt mir den Datensatz, bei dem A den Wert 'xyz' hat")?
Ich hab mir überlegt, dass ich vielleicht einmal anhand der Position nach der Sortierung auf die Datensätze zugreifen will und als weitere Option evtl. auch noch anhand der Inhalte.
Also wäre wohl eine ArrayList schon besser?!?

In eine HashMap kann ich doch eh bloß 2 Einträge pro Zeile speichern, oder - das dachte ich zumindest?!
 

Murray

Top Contributor
magic_halli hat gesagt.:
In eine HashMap kann ich doch eh bloß 2 Einträge pro Zeile speichern, oder - das dachte ich zumindest?!
Eigentlich Objekt (=einen Datensatz) und einen sog. Key (also eine Art Namen, mit dem man das Objekt später wiederfindet.
Aber auch in einer ArrayList solltest du deine Datensätze objektweise sepichern (und nicht etwas "flachgeklopft" erst den String des ersten Satzes, dann die 5 doubles des ersten Satzen, dann den String des zweiten Satzes usw.).

Für den Datensatz definierst du eine eigene Klasse und dann nimmst du eine (parametrisierte) ArrayList:

Code:
class Datensatz {
  String a;
  double var1;
  double var2;
  double var3;
  double var4;
  double var5;
}

/* ... */

List<Datensatz> datensaetze = new ArrayList<Datensatz>();

Diese Liste kannst du dann mit java.util.Collections#sort sortieren.
 

thomator

Bekanntes Mitglied
Wenn ich das richtig verstehe, sollen nur die parameter der einzelnen Einträge sortiert werden, deshalb ja eine HashMap, in der mit den Namen (z.B. A) die einzelnen Parameter in einem sortierten Array abgelegt sind. Hab ich da was falsch verstanden?
 

Murray

Top Contributor
thomator hat gesagt.:
Wenn ich das richtig verstehe, sollen nur die parameter der einzelnen Einträge sortiert werden, deshalb ja eine HashMap, in der mit den Namen (z.B. A) die einzelnen Parameter in einem sortierten Array abgelegt sind. Hab ich da was falsch verstanden?
Ich hatte das so verstanden, dass die Datensätze untereinander sortiert werden sollen, nicht die Werte innerhalb der Datensätze.
 

magic_halli

Bekanntes Mitglied
Ich hatte das so verstanden, dass die Datensätze untereinander sortiert werden sollen, nicht die Werte innerhalb der Datensätze.
Jawoh, richtig verstanden!

Ich hab da jetzt mal was probiert - so siehts bisher bei mir aus (Auszug der relevanten Stelle):
Code:
String a;
double var1=0;
double var2=0;
double var3=0;
double var4=0;
double var5=0; 
ArrayList liste = new ArrayList();

//Tabelle durchgehen und Werte auslesen und abspeichern
for(int i=0;i<rows.getarraysize();i++) {
     row = rows.get(i);
     for(int j=0;j<columns.getarraysize();j++) {
          column = columns.get(j);
          //hier die einzelnen Variablen belegen, z.B. (das klappt bereits!!!)
          a=value.GetCell(column,row);
          var1=value.GetCell(column,row);
          //usw.
     }
     liste.add(i, a + "," + var1 + "," + var2);     //usw.
}

So war jetzt erstmal mein Gedanke, dass ich mir zeilenweise, wie ich die Werte auslese, diese auch gleich zeilenweise in die ArrayList schreibe.
Ich muss allerdings die Werte mit einem "," trennen, sonst gibts nen Fehler. Lieber wäre mir, wenn ich die Werte neben einem Index i auch noch einen Index j hätten, der von links nach rechts in der ArrayList läuft! Somit könnte ich einzelne Werte später doch wieder viel einfacher auslesen, statt den Kommaseparator als Trennzeichen zu benutzen. Gibts da vielleicht ne Möglichkeit?
Ist mein Gedanke aber erstmal halbwegs richtig?
 

Murray

Top Contributor
Wie gesagt: bau dir für den Datensatz eine eigene Klasse, dann kannst du jederzeit auf die einzelnen Felder zugreifen, ohne irgendwelche Strings zerhacken zu müssen.
 

Murray

Top Contributor
magic_halli hat gesagt.:
Code:
          column = columns.get(j);
          //hier die einzelnen Variablen belegen, z.B. (das klappt bereits!!!)
          a=value.GetCell(column,row);
          var1=value.GetCell(column,row);
          //usw.
     }

So dürften aber a und var1 den gleichen Wert enthalten, oder?
 

magic_halli

Bekanntes Mitglied
Ah, natürlich... Recht ihr habt!
Ich habe beim abtippen etwas vergessen...
Code:
String a;
double var1=0;
double var2=0;
double var3=0;
double var4=0;
double var5=0;
ArrayList liste = new ArrayList();

//Tabelle durchgehen und Werte auslesen und abspeichern
for(int i=0;i<rows.getarraysize();i++) {
     row = rows.get(i);
     for(int j=0;j<columns.getarraysize();j++) {
          column = columns.get(j);
          String colInstanceName = column.GetSymbol();
          //hier die einzelnen Variablen belegen, z.B. (das klappt bereits!!!)
          if(colInstanceName.equalsIgnoreCase("Spalte1")){
               ParamValue value = value.GetCell(column, row);
               a=value.GetCell(column,row);
          }
          //wenn Spaltenüberschrift gleich <String>: Wert aus Tabelle auslesen
          else if(colInstanceName.equalsIgnoreCase("Spalte2")){
               ParamValue value = value.GetCell(column, row);
               var1=value.GetCell(column,row);
          }
          //usw.
     }
     liste.add(i, a + "," + var1 + "," + var2);     //usw.
}
Mh, das lag daran, dass ich das ganze etwas Foren- bzw. Leserfreundlich gestalten wollte. :oops:
Auf jeden Fall erhalte ich definitiv die korrekten Werte für die einzelnen Variablen!

Naja, ok... Also besser die Datensätze in eine eigene Klasse rein? Mh, wüßte ich jetzt erstmal so pauschal nicht, wie ich da vorgehe, aber egal - das wird schon. :###
 
B

bygones

Gast
ist einfach

statt
Code:
liste.add(i, a + "," + var1 + "," + var2);
erstellst du dir eine klasse die diese variablen haelt

Code:
public class MyClass {
  private String a;
  private double var1;
  private double var2;

  // konstruktor und getter methoden
}
falls deine klasse nun sortiert werden soll muss sie das Interface Comparable implementieren (die nutzung eines comparators mal aussen weggelassen).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
F Wortpaare - HashMap - ArrayList Java Basics - Anfänger-Themen 6
F Collections ArrayList oder Hashmap mittel Collections.sychronised Java Basics - Anfänger-Themen 6
S Array[HashMap][ArrayList][ArrayList] Java Basics - Anfänger-Themen 21
O Werte aus HashMap in einer ArrayList Java Basics - Anfänger-Themen 3
C Arraylist mit string array oder hashmap oder objekt? Java Basics - Anfänger-Themen 5
D arraylist aus einer hashmap auslesen Java Basics - Anfänger-Themen 5
T ArrayList in HashMap? Java Basics - Anfänger-Themen 22
S ArrayList, Hashmap oder Klasse zu speichern von Datensätzen Java Basics - Anfänger-Themen 6
krgewb ArrayList allgemein halten Java Basics - Anfänger-Themen 6
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J ArrayList vergleichen im spiel Mastermind Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
W if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das? Java Basics - Anfänger-Themen 6
W ArrayList und toString Java Basics - Anfänger-Themen 17
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
M 2d ArrayList durchgehen Java Basics - Anfänger-Themen 2
Blkckroll45 Arraylist Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
D Arraylist mit Komplexen Datentyp Java Basics - Anfänger-Themen 3
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
F Erste Schritte Zahlenreihe von Arraylist in 3erBlöcke sortiert in neue Arraylist Java Basics - Anfänger-Themen 2
M ArrayList mit einer Schleife befüllen Java Basics - Anfänger-Themen 2
F Methode ArrayList mit Eingabewert Java Basics - Anfänger-Themen 2
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
thobren jtable arraylist Java Basics - Anfänger-Themen 12
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
Zeppi OOP ArrayList Java Basics - Anfänger-Themen 2
P ArrayList Java Basics - Anfänger-Themen 4
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
M For Schleife/ArrayList Java Basics - Anfänger-Themen 12
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
krgewb ArrayList von ArrayList Java Basics - Anfänger-Themen 2
R ArrayList Problem Java Basics - Anfänger-Themen 6
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
S ArrayList in andere Klasse übernhemen Java Basics - Anfänger-Themen 5
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12
B Objektverwaltung mit ArrayList in einer seperaten Klasse Java Basics - Anfänger-Themen 24
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
D Collections Arrays in ArrayList abspeichern Java Basics - Anfänger-Themen 6
F java.util.ArrayList Java Basics - Anfänger-Themen 3
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Arraylist zu einem Array bringen mit Verschachtelung Java Basics - Anfänger-Themen 11
N Methode mit einer Arraylist Java Basics - Anfänger-Themen 106
I ArrayList - Methode zum Speichern eines Eintrags in einer Datei Java Basics - Anfänger-Themen 17
H ArrayList Java Basics - Anfänger-Themen 7
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
C ArrayList mit return zurückgeben Java Basics - Anfänger-Themen 13
K Zahlenfolge ArrayList Java Basics - Anfänger-Themen 3
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
F Array in ArrayList ablegen Java Basics - Anfänger-Themen 3
V ArrayList Java Basics - Anfänger-Themen 1
Z Runden Arraylist Java Basics - Anfänger-Themen 9
X Frage zur einer ArrayList in einer ArrayList Java Basics - Anfänger-Themen 5
F Arraylist als Pfadausgabe Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben