G
Gelöschtes Mitglied 34244
Gast
Hallo,
ich bin gerade dabei eine Funktion zu schreiben, die die Wörter aus einem String nach ihren Vorkommnissen zählt und auflistet.
Also, z.b. für den String "Dies ist ein Test. Dies ist ein weiterer Test"
Dies 2
ist 2
ein 2
weiterer 1
Test 2
Dazu benutze ich eine HashMap. Um das ganze zu sortieren importiere ich die HashMap in eine TreeMap. Dabei stelle ich allerdings fest, dass in der TreeMap Werte zum großteil nicht übernommen werden. Vorher hatte die HashMap eine Größe von ca. 7000 Objekten und danach die TreeMap nur noch 129. Was mache ich da falsch?
UPDATE: Offensichtlich liegt das am ValueComparator, wenn ich diesen entferne wird alles ordnungsgemäß importiert
Hier mein Code:
Hier noch die Klasse ValueComparator:
ich bin gerade dabei eine Funktion zu schreiben, die die Wörter aus einem String nach ihren Vorkommnissen zählt und auflistet.
Also, z.b. für den String "Dies ist ein Test. Dies ist ein weiterer Test"
Dies 2
ist 2
ein 2
weiterer 1
Test 2
Dazu benutze ich eine HashMap. Um das ganze zu sortieren importiere ich die HashMap in eine TreeMap. Dabei stelle ich allerdings fest, dass in der TreeMap Werte zum großteil nicht übernommen werden. Vorher hatte die HashMap eine Größe von ca. 7000 Objekten und danach die TreeMap nur noch 129. Was mache ich da falsch?
UPDATE: Offensichtlich liegt das am ValueComparator, wenn ich diesen entferne wird alles ordnungsgemäß importiert
Hier mein Code:
Java:
String[] input = db.getBodies();
HashMap<String, Integer> mostWords = new HashMap<String, Integer>();
ValueComparator bvc = new ValueComparator(mostWords);
TreeMap<String,Integer> sorted_map = new TreeMap<String,Integer>(bvc);
long totalWords = 0;
for(int i=0;i<input.length;i++){
String[] words = input[i].split(" ");
totalWords += words.length;
for(String word:words){
if(mostWords.containsKey(word)){
mostWords.put(word, mostWords.get(word)+1);
} else {
mostWords.put(word, 1);
}
}
}
Log.d(mostWords.size()); // ca. 7000
sorted_map.putAll(mostWords);
Log.d(sorted_map.size()); // 129????
//Log.d("results: "+sorted_map);
Hier noch die Klasse ValueComparator:
Java:
public class ValueComparator implements Comparator<String>{
Map<String, Integer> base;
public ValueComparator(Map<String, Integer> base) {
this.base = base;
}
public int compare(String a, String b) {
return base.get(b).compareTo(base.get(a));
}
}
Zuletzt bearbeitet von einem Moderator: