Problem zählen in Map<String, Integer>
Fragte ich einen Frage zu zählen, wie oft ein Wort in der ArrayList:
ACU ACU ACU ACU ACY ACY AER AER AER AGC
Also für
ACU wir erhalten 4,
ACY wir bekommen 2,
AER wir erhalten 3,
AGC-wir erhalten 1.
Bekam ich einige helfen, aber ich kann nicht damit es funktioniert.
Darren gab mir eine sehr wichtige Antwort:
Map<String, Integer>wordCount = new HashMap<String, int>();
for(String seq : yourWordList){
wordCount.put(seq, wordCount.get(seq++));
}
Aber in dem Teil wordCount.put(seq, wordCount.get(seq++));
Ich bekomme eine Fehlermeldung, dass keine Konvertierung von String zu int, ich habe versucht, den code zu modifizieren, um zu arbeiten
aber ich bin immer falsche zahlen
ACU 0
ACU 1
ACU 1
ACU 1
ACY 1
ACY 2
AER 2
AER 3
AER 3
int value=0;
Map<String, Integer>wordCount = new HashMap<String, Integer>();
for(String seq : WordList){
Set<String> set = wordCount.keySet();
value = set.size();
wordCount.put(seq, value));
}
Bitte helfen Sie mir auf diesem. Vielen Dank an alle.
- Ob oder nicht ist dies "Hausaufgaben", die Sie nicht gehen, zu lernen, wenn Sie einfach Ausschneiden und einfügen von code in SO Antworten. Sie sollten versuchen, zu Kodieren und Debuggen Sie Ihre eigenen Sachen.
- Vielen Dank für die Ratschläge, ich habe versucht zu Debuggen mein selbst, das problem hier war, dass ich bin nicht vertraut mit der Verwendung von maps und hash, sorry, wenn dies scheint zu sein, copy paste, aber ich habe wirklich versucht zu laufen, dass auch ich mich geändert, dass der code mein eigener, deshalb Frage ich für Ihre kompetente Kommentare. Grüße
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wollen, ist:
Den
Map
ist ausString
zuInteger
.Integer
ist unveränderlich so kann man nicht Inkrementieren, statt. Haben Sie zum abrufen des aktuellen Werts, erhöhen Sie es und legte es zurück. Sie versuchen zu rufenwordCount.get(seq++)
, die nicht viel Sinn machen.get()
hat, übergeben werden, in einerString
(für diese Art vonMap
) und Sie nicht verwenden können++
auf eine unveränderlicheInteger
sowieso.wordCount.get(seq++)
ist wohl das Problem-versuchen Sie Erhöhung der Rückgabewert der Methode get (jetzt bist du offensichtlich der Versuch unternommen, erhöhen Sie die String-argument, die Auslösung der Fehler. Versuchen Sie, die zuwordCount.get(seq)+1
seq
hatte noch nie mit null initialisiert in der Karte. Daher, jedes dieser Elemente haben würden ausgewertet, umnull+1
zur Laufzeit. (Nur ein FYI, Sie haben Ihre " cut-and-paste-Hausaufgaben Antwort oben an.)Alternative Lösung, die verwendet
Multiset
von Guave.