/ / Ausdruck von String-Duplikaten mit HashMap in Java-Java, Hashmap

Drucken von Zeichenketten mit HashMap in Java - Java, hashmap

Ich habe diesen Code:

HashMap<String, Integer> dupeMap = new HashMap<>();
for (String name : sortWords)
if(dupeMap.containsKey(name)) {
int count = dupeMap.get(name);
dupeMap.put(name, ++count);
} else {
dupeMap.put(name, 1);
}

System.out.printf("Duplicates: %sn", dupeMap.entrySet());

Ich möchte, dass Duplikate nach dem Durchlauf ausdruckendurch meine ArrayList (sie wurde zuvor erstellt und liest nur die angegebene Datei und sortiert die Zeichenfolgen in alphabetischer Reihenfolge).

Duplikate: [Acht = 1, Zwei = 2, Sieben = 2, Vier = 1]

usw. Gibt es eine Möglichkeit, es paarweise auszudrucken (Schlüssel = Wert Schlüssel = Wert usw.) und ohne die eindeutigen Wörter zu erwähnen?

Ich bin sehr neu in Maps, also musste ich selbst für diesen Code nach stackoverflow suchen, obwohl ich die gleiche Idee hatte, dass ich einfach nicht in der Lage war, eine gute Möglichkeit zu finden, es zu schreiben.

Antworten:

4 für die Antwort № 1

Sie können auch verwenden removeIf() (hinzugefügt in JDK1.8) auf der entrySet() die Wörter nur einmal entfernen, wie unten gezeigt:

Set<Map.Entry<String, Integer>> elements = dupeMap.entrySet();
elements.removeIf(element->element.getValue() ==1);//removes words ocured only once
System.out.printf("Duplicates: %sn",elements);

AUSGABE:

Duplicates: [Two=2, Seven=2]

Wenn Sie JDK1.7 oder eine frühere Version verwenden, müssen Sie verwenden Iterator die Wörter nur einmal sicher entfernen, wie unten gezeigt:

Set<Map.Entry<String, Integer>> elements = dupeMap.entrySet();
Iterator<Map.Entry<String, Integer>> iterator = elements.iterator();
while(iterator.hasNext()) {
Map.Entry<String, Integer> element = iterator.next();
if(element.getValue() ==1) {
iterator.remove();
}
}
System.out.printf("Duplicatesss: %sn",elements);

5 für die Antwort № 2

Filtern Sie den Eintragssatz, um Elemente mit dem Wert 1 zu entfernen:

List<Map.Entry<String, Integer>> dupes = dupeMap.entrySet()
.stream()
.filter(e -> e.getValue() > 1)
.collect(Collectors.toList());

Dann:

System.out.printf("Duplicates: %sn", dupes);