Zugriff auf csv-Datei per hashmap

Brian Stone

Mitglied
Hallo,

ich fang mal mit dem üblichen Gedöhns an ;-) :

Seit einer Weile beschäftige ich mit der Programmierung in Java.
Nach mehr oder weniger erfolgreichen Programmen versuche ich mich momentan an der Verarbeitung von csv-Dateien.

Bisher habe ich es geschafft eine csv-Datei zu erstellen und diese auch wieder komplett einzulesen.
Es handelt sich hierbei um eine Tabelle mit 3 Spalten und 3 Zeilen:

Code:
1st column;2nd column;3rd column
a to 1st col;a to 2nd col;a to 3rd col
b to 1st col;b to 2nd col;b to 3rd col

Nun möchte ich aber auf bestimmte Spalten zugreifen und mir den zugehörigen Inhalt anzeigen lassen.
Nach meiner Recherche eignen sich dazu wohl hashmaps am besten.

Allerdings habe ich Schwierigkeiten, das Prinzip dieser Vorgehensweise zu verstehen.
Was ich bisher verstanden habe ist, dass ich einen 'key' definiere und diesem dann einen 'value' zuordne.
Ich weiß auch, dass der 'key' einzigartig sein muss.

Mein Hauptproblem in meiner Recherche ist, dass die meisten Beispiele davon ausgehen, die erste Spalte einer Tabelle als 'keys' zu definieren.
Ich benötige allerdings die Inhalte der ersten Zeile als 'keys' und möchte dann den jeweiligen Inhalt der Spalte komplett als 'value' diesem 'key' zuordnen.

Leider habe ich absolut keine Ahnung, wie ich nun zur Lösung meines Problems komme und hoffe hier auf den richtigen Ansatz oder vielleicht sogar eine gute Erklärung zur Nutzung und Funktionsweise von hashmaps.

Hier mal mein bisheriger Code:

Java:
private static void mapCsvFile(String file) {
		try {
			HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
			
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String line = reader.readLine();

			String[] key = line.split(";");
			line = reader.readLine();
			
			for (int i = 0; i < key.length; i++) { // generates keys
				ArrayList<String> list = new ArrayList<String>();
				
				while (line != null) {
					String[] tmp = line.split(";");
					list.add(tmp[i]);
					line = reader.readLine();
				}
				line = reader.readLine();
				map.put(key[i], list);
			}
			reader.close();
			System.out.println(map.get("1st column"));

		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Wahrscheinlich werden jetzt viel Hände über vielen Köpfen zusammenschlagen.
Aber vielleicht kann man mir ja doch noch helfen.

Gruß Brian

Vielen Dank im Voraus. ;-)
 
Zuletzt bearbeitet:

NoXiD

Bekanntes Mitglied
Da bleibt dir meines Wissens nichts aus als das du vorerst mal die Header extra ablegst und dann das File durchiterierst und für jeden Header den value setzen bzw. anzuhängen...
 
Zuletzt bearbeitet:

Brian Stone

Mitglied
Ich möchte die Wert der ersten Zeile als Keys.
Also '1st column' , '2nd column' und '3rd column' sollen Keys sein.

Die darunterliegenden Werte sollen die Values werden.

Wenn ich also '1st column' aufrufe, sollen mir 'a to 1st col' und 'b to 1st col' ausgegeben werden.
Gerne auch in einer Liste.
 

NoXiD

Bekanntes Mitglied
folgendes Beispiel sollte dir eine Idee zeigen (nicht Perfekt, vorallem nicht Fehlerfrei :p ). Funktioniert aber nur wenn jede Spalte Einträge hat, sollte dir beim durchlesen klar sein ;)

Java:
public class Main {
	public static void main(String[]args){
		String filepath = "test.txt";
		
		try {
			doThings(filepath);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void print(Map<String,ArrayList<String>> map){
		for(String s : map.keySet()){
			System.out.println(s + " " + map.get(s).toString());
		}
	}
	
	public static void doThings(String filename) throws Exception{
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        Map<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();  
        ArrayList<String> headers = new ArrayList<String>();
        
        //header in die map stecken und schon mal die dazugehörige ArrayList initialisieren
        String line = reader.readLine();
        for(String s : Arrays.asList(line.split(";"))){
        	map.put(s, new ArrayList<String>());
        }
        //nur die header in eine Liste für die spätere iteration
        headers.addAll(map.keySet()); 
        
        while((line = reader.readLine()) != null){
        	String split[] = line.split(";");
        	for(int i = 0; i < headers.size(); i++){
                        //die header durchiterieren und dazugehörigen value zur Liste hinzufügen
                        //für jeden header MUSS ein element vorhanden sein, sonst stimmt das ganze nicht mehr zusammen
        		map.get(headers.get(i)).add(split[i]);
        	}
        }
        print(map);
    }
}

ergibt folgenden Output:
Code:
1st column [a to 1st col, b to 1st col, c to 1st col]
2nd column [a to 2nd col, b to 2nd col, c to 2nd col]
3rd column [a to 3rd col, b to 3rd col, c to 3rd col]
 
Zuletzt bearbeitet:

Brian Stone

Mitglied
Hallo,

danke erstmal für die Antworten,
ich habe es auch schon ein Stück weiter geschafft und hab es folgendermaßen gelöst:
Mein Code:

Java:
	public void mapCsvFile(String file) {
		try {
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String line = reader.readLine();
			String[] key = line.split(";");
			
			while ((line = reader.readLine()) != null) {
				Map<String, String> map = new HashMap<String, String>();
				String[] value = line.split(";");
				
				for (int i = 0; i < value.length; i++) {
					map.put(key[i], value[i]);
				}
				list.add(map);
			}
			reader.close();
			System.out.println(list); // die Ausgabe ist nur für mich ;-)
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

Es wird nun also eine Liste erstellt, welche als jeweiliges Listenelement eine Map enthält.

Jetzt möchte ich durch diese Liste iterieren und dann das jeweilige Element(Map) nach einem Key durchsuchen.
Dann sollen alle zum Key gehörenden Werte ausgegeben werden.
Wie ich durch die Liste iteriere weiß ich, aber nicht, wie ich das Element(Map) durchsuche.
 
Zuletzt bearbeitet:

NoXiD

Bekanntes Mitglied
Map (Java Platform SE 6)

keySet() ist deine Antwort. Ich verstehe zwar nicht ganz warum du jede Zeile in eine eigene Map speichern willst, aber vlt. hat es ja einen praktikablen Nutzen für dich ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
K JApplet zugriff auf Excel Datei Java Basics - Anfänger-Themen 3
K Zugriff auf Datei in Eclipse Projekt Java Basics - Anfänger-Themen 11
S Kein Zugriff auf Files in Jar-Datei Java Basics - Anfänger-Themen 4
K Zugriff auf Datei beenden Java Basics - Anfänger-Themen 4
F zugriff auf funktion anderer datei Java Basics - Anfänger-Themen 7
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
W Typisierte ArrayList und der Zugriff auf den Typ Java Basics - Anfänger-Themen 5
M Zugriff auf Klasse Java Basics - Anfänger-Themen 2
K Zugriff auf C: Java Basics - Anfänger-Themen 5
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T ZUgriff auf 'Werte' Java Basics - Anfänger-Themen 3
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
B Methoden Zugriff auf Variable ermöglichen Java Basics - Anfänger-Themen 3
M Zugriff auf Arraylist Java Basics - Anfänger-Themen 7
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
B Erste Schritte Array-Zugriff Java Basics - Anfänger-Themen 10
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
J Threads Zugriff auf Attribute Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben