Hi,
ich schreibe gerade an einer Funktion die folgendes macht:
- sie nimmt einen Text als String entgegen
- und speichert für jedes Wort das in diesem Text vorkommt wie oft es in diesem Text vorkommt
- das ganze wird in einer Hashmap gespeichert, der key ist das Wort selbst und der value wie oft es im Text vorkommt
Nun möchte ich wissen welche Worte am häufigsten vorkommen, mit anderen Worten, ich möchte den Hash nach values sortiert haben.
Wie könnte ich das machen?
Klar könnte ich mir auch mit keySet() alle keys zurückliefern lassen, dann über den Hash laufen, das Maximum extrahieren, in eine neue Liste schreiben usw, etc. aber das muss doch auch eleganter gehen, oder?
Danke für alle Tips im voraus!
ich schreibe gerade an einer Funktion die folgendes macht:
- sie nimmt einen Text als String entgegen
- und speichert für jedes Wort das in diesem Text vorkommt wie oft es in diesem Text vorkommt
- das ganze wird in einer Hashmap gespeichert, der key ist das Wort selbst und der value wie oft es im Text vorkommt
Code:
public void calcWordsStatForSingleDoc(String pRfqText) {
String wordRegex = "\\b[a-zöäüß]+\\b";
Pattern wordPattern = Pattern.compile(wordRegex);
Matcher wordMatcher = wordPattern.matcher(pRfqText);
while(wordMatcher.find()){
if(wordCount.containsKey(wordMatcher.group())){
wordCount.put(wordMatcher.group(), new Integer(((Integer)wordCount.get(wordMatcher.group())).intValue()+ 1 ));
}
else{
wordCount.put(wordMatcher.group(), new Integer(1));
}
}
}
Nun möchte ich wissen welche Worte am häufigsten vorkommen, mit anderen Worten, ich möchte den Hash nach values sortiert haben.
Wie könnte ich das machen?
Klar könnte ich mir auch mit keySet() alle keys zurückliefern lassen, dann über den Hash laufen, das Maximum extrahieren, in eine neue Liste schreiben usw, etc. aber das muss doch auch eleganter gehen, oder?
Danke für alle Tips im voraus!