Textdatei einlesen und in HashMap speichern (duplikate entfernen)

killig

Mitglied
[CODE lang="java" title="hashMap"]package übungen;

import java.io-BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;

public class hashMapTest {
public static void main(String[] args) throws IOException{
BufferedReader reader = null;
String zeile = null;

HashMap<String, String> map = new HashMap<String, String>();

try {
Object[] keyes = map.keySet().toArray();
reader = new BufferedReader(new FileReader("C:\\Dev\\städteInput.txt"));

while((zeile = reader.readLine()) != null){
for (int i = 0; i < keyes.length; i++){
map.get(zeile);
}
}
} catch (IOException e1){
System.err.println("Error :" + e1);
}
System.out.println(map)
}
}

}
}[/CODE]
Hey, ich bin derzeit dran, eine Textdatei in eine Hashmap zu speichern. In der Textdatei befinden sich allerdings Duplikate, welche wohl durch eine HashMap automatisch entfernt werden soll. Jedoch wird meine HashMap immer als leer ausgegeben. Dazu muss ich sagen, dass ich noch nie zuvor mit einer HashMap gearbeitet habe.
Mfg
 

KonradN

Super-Moderator
Mitarbeiter
Dir ist bekannt, was eine Map ist? Und was diese macht?

Du erstellst eine neue (leere) HashMap und holst Dir dann die Keys in ein Array? Was erwartest Du in diesem Array? Ok, nutzt Du nicht weite, also ok - Die Zeile kann also einfach weg.

Dann schau mal, was ein map.get macht.

Also zum einen speichert eine Map Key/Value Paare - die hast du aber nicht, daher ist die Map einfach ungeeignet.
Was Du brauchst ist also vermutlich ein Set. Und damit kannst Du Dich etwas beschäftigen.

Evtl. macht es Sinn, dass Du Dir generell erst mal einen Überblick über die verfügbaren Collection Klassen verschaffst: https://www.javatpoint.com/collections-in-java (Aber Google liefert zu "Java Collections" sehr viel mehr!)

Edit: Typos korrigiert
 
Zuletzt bearbeitet:

White_Fox

Top Contributor
Warum eine HashMap, warum kein HashSet?

Damit erreichst du dein Ziel genauso, brauchst aber dieses Key-Value-Gerödel nicht. Einfach alle Strings in ein HashSet werfen, das HashSet kümmert sich darum daß da alles nur einmal vorkommt.
 

Jw456

Top Contributor
Hallo du willst aus einer Datei etwas in eine Map schreiben.
Mit get kannst du etwas aus der Map lesen aber nicht schreiben. Logisch das sie leer ist. Wurde ja auch nichts in ihr gespeichert.
Etwas in eine Map hinzufügen dann schaue dir mal "put(... , ...)" an.
 

killig

Mitglied
Hallo du willst aus einer Datei etwas in eine Map schreiben.
Mit get kannst du etwas aus der Map lesen aber nicht schreiben. Logisch das sie leer ist. Wurde ja auch nichts in ihr gespeichert.
Etwas in eine Map hinzufügen dann schaue dir mal "put(... , ...)" an.
put(key, value) nutze ich ja schon. Das get mir was gibt, ist klar. :D
Jedoch beinhaltet die textdatei pro Zeile nur ein Wort. In den ganzen Beispielen im Internet werden die immer über map.add("Key1", "Hier steht der erste Punkt"), etc. hinzugefügt. Also habe ich so gesehen nur die values. Über Set<String> keyes = map.keySet(); fügt er mir keine hinzu, da vekomme ich den Fehler
"The method put(Integer, String) in the type HashMap<Integer, String> is not applicatet for the arguments (Set<Integer>, String) "
 

KonradN

Super-Moderator
Mitarbeiter
Hast Du Dich einmal mit den Collections allgemein beschäftigt? Das wird alles sehr gut auf vielen seiten beschrieben und wenn da etwas verlinkt wurde, dann sollte es recht schnell klar werden.

Also habe ich so gesehen nur die values.
Nein, Du hast Key/Value Paare und nicht nur die Values. Das, was in einer Map gespeichert ist, kannst Du über entrySet() abrufen. Wenn Du dir das anschaust, dann wird dir hoffentlich deutlich, was Du in einre Map hast: Eine Menge (Set) von Key/Value Paaren (Map.Entry Klasse).

Und daher darfst Du bei Map.put auch nur den Key und den Wert angeben, denn dann wird ein Paar von dem Key und dem Wert gespeichert.
 

KonradN

Super-Moderator
Mitarbeiter
Wie schon gesagt wurde ist ein Hashset besser für dein vorhaben geeignet

PS
map.add("Key1")
Ist ein Set
Das sehe ich so nicht. Ich denke eher, dass er da derzeit die Reihenfolge der Reihe nach haben möchte, also sowas wie: erster Wert: xxx, zweiter Wert: yyyy, ....

Wenn die Reihenfolge der Werte wichtig ist und erhalten bleiben werden sollte, dann ist das kein Map<Integer, String> sondern einfach eine List<String>, die dann halt die Reihenfolge hat und der Zugriff über den Platz ist auch möglich und ist lediglich 0-basiert, d.h. der erste Wert ist an Position 0, der zweite Wert an Position 1 u.s.w.
 

Jw456

Top Contributor
Wenn das so ist. Dann sollte er den key selber generieren. Einen int in String als key zb. Das value ist das der Word aus der Datei

Um doppelte Einträge der Datei nicht mit zuspeichern dann vielleicht key das Word und value ist der generierte index.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Bei list sind doch doppelte Einträge oder? Bei einem Set nicht.
Die Anforderungn sind schlicht nicht bekannt. Wir wissen nicht, was er will, wir haben nur Code, aus dem zumindest ich nichts sinnvolles herauslesen kann.

Wenn mein Verdacht richtig ist und er in einer Map<Integer, String> in dem Key die Stelle, an der der Wert gekommen ist, speichern will, dann bedeutet es nur, dass du keine doppelten Stellen hast. Und das ist bei der List ebenso. An einem Index ist immer nur ein Wert. Es gibt keine id mehrfach in einer List. Die Keys in einer Map sind einzigartig, aber die Values in einer Map können auch mehrfach vorkommen.

Aber ob dies etwas ist, das er machen will oder nicht, wissen wir einfach nicht.

Ob eine List besser geeignet ist als eine Map, wissen wir auch nicht. Das wäre z.B. der Fall, wenn er Werte löschen können will. Eine List macht keinen Sinn, wenn Du am Ende nur werte für 3, 17, 21 und 1000000 haben willst. Bei einzelnen Werten könnte man überlegen, Lücken mit null zu speichern, aber das Beispiel zeigt: Ein Array (bei ArrayList) mit >1 Mio Einträgen nur um 4 Elemente zu speichern erscheint zumindest unsinnig.

Daher wie immer die Frage: Was sind die genauen Anforderungen? Was dann Sinn macht muss man schauen. Daher reite ich auch darauf herum, dass sich der TE doch bitte mit den Collections generell auseinander setzt. Google wird zu "Einführung java collections" doch bestimmt etwas finden, das dem TE einen ersten Überblick gibt.
 

Jw456

Top Contributor
der Textdatei befinden sich allerdings Duplikate, welche wohl durch eine HashMap automatisch entfernt werden soll.
Daraus lese ich das er keine Duplikate in der Liste/ Map haben will.

Wenn er den Index braucht an dem das Wort in der Datei das erste Mal auftaucht ist eine Map wohl besser die sich den Index merkt., als value
 

KonradN

Super-Moderator
Mitarbeiter
Daraus lese ich das er keine Duplikate in der Liste/ Map haben will.

Wenn er den Index braucht an dem das Wort in der Datei das erste Mal auftaucht ist eine Map wohl besser die sich den Index merkt., als value
Ja, das ist im Start Post eigentlich recht deutlich - ich hatte mich zu sehr auf sein letztes Posting bezogen und dabei das Ursprungspost aus den Augen verloren.

Wichtig wäre halt,die Anforderungen genau zu nennen, wass er braucht.... Wir haben auf jeden Fall viele Lösungen erarbeitet:
- Ganz wichtig ist der Hinweis auf Set, das die doppelten Werte heraus wirft. Wenn die Sortierung gleich bleiben soll, dann wäre SortedSet noch eine Idee.
- Deine Idee jetzt mit der Position ist auch gut, wenn die erste Position gebraucht würde.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
S Input/Output Latin-9 (ISO 8859-15) Textdatei einlesen Allgemeine Java-Themen 2
H Textdatei (1GB) einlesen und verarbeiten Allgemeine Java-Themen 15
Balbes Dateipfad in den JFileChooser aus Textdatei einlesen Allgemeine Java-Themen 7
G Textdatei einlesen unter Windows 7 Allgemeine Java-Themen 4
A Textdatei im Applet einlesen Allgemeine Java-Themen 2
C Textdatei einlesen Allgemeine Java-Themen 3
G Textdatei in String einlesen Allgemeine Java-Themen 2
L Textdatei einlesen und verändern Allgemeine Java-Themen 3
M Problem: Textdatei einlesen Allgemeine Java-Themen 2
Y Einlesen & Ausgeben einer Textdatei _2 Allgemeine Java-Themen 3
Y Einlesen & Ausgeben einer Textdatei Allgemeine Java-Themen 5
P Einlesen einer Textdatei Allgemeine Java-Themen 8
D Textdatei zeilenweise einlesen Allgemeine Java-Themen 2
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
S Textdatei statt von Dateisystem aus .jar lesen Allgemeine Java-Themen 3
curranux Ausgabe als Textdatei schreiben. Allgemeine Java-Themen 2
B Scanner erkennt keinen Text in Textdatei, obwohl welcher drinsteht Allgemeine Java-Themen 10
M In Textdatei schreiben Allgemeine Java-Themen 3
J Bestimmte Zeile aus Textdatei auslesen Allgemeine Java-Themen 18
OnDemand Download Textdatei falsches Charset Allgemeine Java-Themen 1
K Textdatei als Objekt Allgemeine Java-Themen 4
O JAR Export Textdatei benutze Allgemeine Java-Themen 14
L Filewriter schreibt Zahlen in Textdatei Allgemeine Java-Themen 2
T Synchronisation einer Textdatei im Groupshare Allgemeine Java-Themen 1
I String einer Textdatei anfügen Allgemeine Java-Themen 2
S Von Wav Datei mit Morsecode in Morsecode als Textdatei Allgemeine Java-Themen 2
R Duplikate aus einer Textdatei entfernen? Allgemeine Java-Themen 20
K Input/Output Ausgabe in Textdatei Allgemeine Java-Themen 7
Iron Monkey Inhalt von JTable in die Textdatei mit StringWidth schreiben Allgemeine Java-Themen 3
J Textdatei auslesen, die gerade benutzt wird Allgemeine Java-Themen 8
P Textdatei aus Ressourcen laden. Allgemeine Java-Themen 8
W Auslesen von Textdatei Allgemeine Java-Themen 16
M gleichzeitiger Zugriff auf eine Textdatei Allgemeine Java-Themen 6
S TextDatei in Panel anzeigen Allgemeine Java-Themen 10
X Textdatei auf gewünschte Anzahl der Zeilen kürzen Allgemeine Java-Themen 2
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
F In mitten einer Textdatei schreiben Allgemeine Java-Themen 7
N Textdatei in Jar Problem Allgemeine Java-Themen 6
B Leerzeile in Textdatei Allgemeine Java-Themen 3
B Textdatei Zeilen auslesen Allgemeine Java-Themen 7
E BlueJ Daten in Textdatei schreiben Allgemeine Java-Themen 21
D große Textdatei filtern Allgemeine Java-Themen 13
K Textdatei komplett auslesen bis auf 2 Zeilen Allgemeine Java-Themen 2
S String verschlüsselt in Textdatei speichern Allgemeine Java-Themen 3
E Text ans Ende einer Textdatei anfügen Allgemeine Java-Themen 2
S Textdatei mit externen Editor öffnen Allgemeine Java-Themen 8
L Textdatei nach Wörter durchsuchen Allgemeine Java-Themen 3
Psypsy Bits in Textdatei und zurück Allgemeine Java-Themen 3
A Zeilen aus einer Textdatei löschen Allgemeine Java-Themen 6
ModellbahnerTT Problem: Schleife über Textdatei Allgemeine Java-Themen 5
W Auslesen einer Textdatei Allgemeine Java-Themen 2
D HILFE - Textdatei im jar auslesen Allgemeine Java-Themen 10
T Auslesen und schreiben in eine Textdatei.HILFE!HILFE! Allgemeine Java-Themen 23
G Mit FileWriter in Textdatei über jar Allgemeine Java-Themen 4
E textdatei über "öffnen mit" aufrufen Allgemeine Java-Themen 6
A Objekte in Textdatei weiterschreiben Allgemeine Java-Themen 5
M Textdatei auslesen / schreiben (Server) Allgemeine Java-Themen 9
D Textdatei umbenennen Allgemeine Java-Themen 2
C Software für Windows PC mit integierter Db oder Textdatei? Allgemeine Java-Themen 19
G 2 zeilen in textdatei beim auslesen verbinden Allgemeine Java-Themen 10
D Zeilenvorschub aus einer Textdatei rausnehmen Allgemeine Java-Themen 11
J Textdatei oder doch DB? Allgemeine Java-Themen 2
T GUI mit DB oder Textdatei? Allgemeine Java-Themen 11
M Inhalt von Textdatei in Spinner Allgemeine Java-Themen 5
M neue Textdatei DOS/Unix-Format Allgemeine Java-Themen 11
E Zeilenumbruch in einer Textdatei Allgemeine Java-Themen 2
E Zeilenbumbruch in einer Textdatei Allgemeine Java-Themen 3
D Textdatei und JTextArea Allgemeine Java-Themen 5
M Worte aus Textdatei mit Java ersetzen Allgemeine Java-Themen 4
G Unterscheidung: Binär- oder Textdatei Allgemeine Java-Themen 13
B Zeilenumbruch bei Schreiben einer Textdatei Allgemeine Java-Themen 10
M Textdatei per Request lesen? Allgemeine Java-Themen 2
M Fehler beim öffnen einer 20 mb Textdatei im sign. Applet Allgemeine Java-Themen 5
byte Erste Zeile einer Textdatei entfernen Allgemeine Java-Themen 5
G Eingaben in Textdatei speichern Allgemeine Java-Themen 5
P Problem beim "spliten" eine Textdatei Allgemeine Java-Themen 3
T jar + Textdatei Allgemeine Java-Themen 2
X Bestimmtes Muster in Textdatei verändern Allgemeine Java-Themen 13
G Inhalt einer Textdatei in eine AWT List schreiben Allgemeine Java-Themen 3
G auslesen einer Textdatei Allgemeine Java-Themen 2
E Source-Code aus einer Textdatei kompilieren und ausführen Allgemeine Java-Themen 4
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
L Datein einlesen. Allgemeine Java-Themen 5
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
Henrithebegiinerofjava Erste Schritte Werte in Eingabefelder einlesen und wiederholen lassen. Allgemeine Java-Themen 3
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben