Aunque está ya desde Java 8, acabo de descubrir el método computeIfAbsent() de Map
Hay veces que en mi código tengo un Map cuya clave es cualquier cosa, un String por ejemplo, y que el valor es a su vez otra Collection, por ejemplo, una List
Map<String, List<Integer>> myMap = new HashMap<>();
Cuando llegaba el momento de meter un nuevo Integer en la lista valor, siempre había que comprobar primero si había o no lista para crearla en caso de que no. Luego ya se podía añadir el Integer
if (null == myMap.get("key1")) {
myMap.put("key1", new ArrayList());
}
myMap.get("key1").put(anInteger);
Pues bien, el método computeIfAbsent() nos facilita esta tarea. El código quedaría
myMap.computeIfAbsent("key1", k->new ArrayList()).add(anInteger);
Básicamente, si el valor de «key1» existe, devuelve el valor List que corresponda. Si no existe, llama a lo de new ArrayList(), lo mete en el Map y lo devuelve
En cualquiera de los dos casos, devuelve la List. Ya solo nos queda llamar al método add() del List devuelto para meter el entero.
Una de las ventajas de tener en el IDE un analizador estático de código, estilo SonarLint y fijarse en las sugerencias que te hace.