Wenn eine Map unter Java etwas komplexer wird, wie z.B. folgende Map:
Map<String, List<String>> testMap = new HashMap<>();
wird das befüllen derselbigen interessant. In diesem Beispiel soll ein Key und ein neuer Value für die Liste vom Typ String hinzugefügt werden. Damit dies funktioniert muss überprüft werden ob der Key bereits existiert und wenn dies nicht der Fall ist, ein neuer Key angelegt werden. Im kompletten Beispiel sieht das Ganze so aus:
String key = "ABC"; String valueForList = "DEF"; Map<String, List<String>> testMap = new HashMap<>(); if(!testMap.containsKey(key)) { testMap.put(key, new ArrayList<>()); } testMap.get(key).add(valueForList);
Einfacher und unkomplizierter ist es die Methode computeIfAbsent zu nutzen, welche seit Java 8 in der Definition des Map-Interfaces enthalten ist. Mit der Nutzung der Methode verkürzt sich das Beispiel wie folgt:
String key = "ABC"; String valueForList = "DEF"; Map<String, List<String>> testMap = new HashMap<>(); testMap.computeIfAbsent(key, s -> new ArrayList<>()).add(valueForList);
Damit wird automatisch eine neue ArrayList angelegt, wenn der entsprechende Schlüssel noch nicht hinterlegt ist. Anschließend kann der entsprechende Wert für die Liste hinzugefügt werden.