Java HashMap: Key anhand von Value als Set<String> zurückgeben?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wieso iterierst du nicht einfach über die Einträge und stellst das Set selbst zusammen?

Set<String> keys = new HashSet<String>();

for (Entry<String, String> entry : yourMap.entrySet()) {
  if (entry.getValue().equals(valueToCheck)) {
    keys.add(entry.getKey());
  }
}

PS.: Null-Checks könnten im obigen Snippet noch sinnvoll sein, werde ich an dieser Stelle aber nicht ergänzen.

Dijkstra3006 
Fragesteller
 01.01.2020, 17:12

Danke! :)

0

Ohne groß zu überlegen:

import java.util.stream.Collectors;

// Return a set of all keys with value 'repository':
public Set<String> getItems(String repository) {
  return storage.sentrySet().tream()
                .filter(e -> e.getValue().equals(repository))
                .map(e -> e.getKey())
                .collect(Collectors.toSet());
}
Woher ich das weiß:Berufserfahrung
ralphdieter  01.01.2020, 19:09
Korrektur: storage.entrySet().stream()
0