Ich möchte eine .txt
Datei lesen, alle Wörter innerhalb dieses Textes nehmen und irgendwie ausdrucken, wie oft jedes Wort im Text ist.Set <> innerhalb der Karte <>, alles drucken?
Nehmen wir zum Beispiel diesen Text:
"A bright day a man walked into a bar and asked for a beer. He was denied the beer because he was a sheep"
Sollte dies geben:
5: a
2: he, beer
1: bright, day, walked, into, bar, asked, denied, was, the,because, man, and, for
Hier ist mein Code:
private void computeFrequencyMap() throws IOException {
TreeMap<String, Integer> dMap = new TreeMap<String, Integer>();
BufferedReader br = new BufferedReader(new FileReader(filen));
String line;
while((line = br.readLine()) != null){
String [] words = line.split("\\s+");
for (String word : words) {
word = word.replaceAll("[^a-zA-Z]", "");
if (!dMap.containsKey(word.toLowerCase())) {
dMap.put(word.toLowerCase(), 1);
} else {
int count = dMap.get(word.toLowerCase());
dMap.put(word.toLowerCase(), count + 1);
}
}
}
TreeMap<Integer, HashSet<String>> sMap = new TreeMap<Integer, HashSet<String>>();
for (Map.Entry<String, Integer> entry : dMap.entrySet()) {
if(sMap.containsKey(entry.getValue())){
//sMap.put(entry.getValue(), entry.getKey());
}else{
sMap.put(entry.getValue(), new HashSet<String>());
}
}
for (Entry<Integer, HashSet<String>> entry : sMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
Dies ist, was ich bekomme, wenn ich das laufen Code:
1 []
2 []
3 []
4 []
5 []
6 []
7 []
8 []
9 []
10 []
11 []
12 []
14 []
16 []
18 []
27 []
32 []
33 []
38 []
44 []
54 []
71 []
Ich bin nur so weit gekommen, kann nicht den "add to the set" Teil richtig bekommen, irgendwelche Vorschläge?
dieser Code nicht kompiliert. Damit es funktioniert, Set words = sMap.get (Erscheinungen); sollte durch HashSet ersetzt werden words = sMap.get (Erscheinungen); –
JavaHopper
Danke für die Hilfe! –
@JavaHopper Ich musste den Code mit Ihrem answe optimieren, funktioniert super! Danke –