/ / HashMap Iterator / ForEach-Schleife - foreach, iterator, hashmap, return, main

HashMap-Iterator / ForEach-Schleife - foreach, Iterator, hashmap, return, main

Nur eine kurze Frage zu HashMaps. Grundsätzlich habe ich zwei Saiten. Beide haben eine bestimmte Anzahl ähnlicher Wörter in jeder Zeichenfolge. Mit der folgenden HashMap-Methode kann ich zählen, wie oft ein bestimmtes Wort in einem Satz vorkommt. Mein Problem gibt diese Methode in einer Hauptmethode zurück. Die HashMap-Methode lautet wie folgt:

public HashMap<String, Integer> getWordCounts(){
HashMap<String, Integer> map = new HashMap<String, Integer>();

for (int i = 0; i < this.getWordArray().length; i++){
String key = getWordArray()[i];
Integer count = map.get(key);

if(count == null){
count = 1;
}else{
count++;
}

map.put(key, count);

}
return map;
}

Dies ist, was ich bisher für meine Rückgabemethode bekommen habe.

        HashMap<String, Integer> hashMapAdd = map.getWordCounts();
for(HashMap.Entry <String, Integer> entry : plato.entrySet()){
System.out.println(entry.getKey()+ "," + entry.getValue());
}

Gehe ich mit der Rückgabemethode den richtigen Weg? Ich habe das Gefühl, ich gehe in die falsche Richtung.

Danke Leute!

Antworten:

0 für die Antwort № 1

Neben der Logik der Funktion (ich habe es nicht analysiert), worum Sie gebeten haben ...
Ja, diese Methode ist vollkommen in OrdnungErstellen und Zurückgeben von HashMap wie folgt in Java. Als ich nach zweijähriger Arbeit an C ++ mit der Arbeit mit Java begann, war ich manchmal auch verwirrt, aber dann verstand ich, dass es vollkommen in Ordnung ist, lokale Objekte in Java zurückzugeben, da der Garbage Collector von JVM behandelt die Probleme, die in C ++ auftreten können, mit dieser Technik. Nun hast du eine Hashmap, um die Hashmap zu durchlaufen und auszudrucken, benutze einfach eine Schleife wie diese:

for(String key:hashMapAdd.keySet())
System.out.println(key+ "," + hashMapAdd.get(key));

Zumindest für mich ist das weniger verwirrend und einfach. Einzelheiten zu HashMap finden Sie unter: https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

P.S: Ich habe angenommen, dass Ihr Code kompiliert wird (Sie haben keine Kompilierungsfehler beanstandet), weil die Zeile map.getWordCounts () verdächtig erscheint, ich habe angenommen, dass diese Methode in einer Klasse namens map ist. Aber in diesem Fall Sie könnten kein HashMap mit der Namenskarte erstellen. Sie müssen nachsehen, warum Sie die Karte in dieser Codezeile verwenden.