VextoR:
Hay una Map<String, List<String>>
. Quiero borrar un valor de la List
si el Map
contiene una clave.
Pero hay una manera de hacerlo en 8 de Java estilo? Como tal vez el uso de computación, fusión o algún otro método nuevo?
El código para eliminar el elemento de la lista en forma de estilo antiguo:
public class TestClass {
public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<>();
map.put("key1", getList());
map.put("key2", getList());
//remove
if (map.containsKey("key1")) {
map.get("key1").remove("a2");
}
System.out.println(map);
}
public static List<String> getList(){
List<String> arr = new ArrayList<String>();
arr.add("a1");
arr.add("a2");
arr.add("a3");
arr.add("a4");
return arr;
}
}
Charles Dowbecki:
Usted podría utilizar Map.computeIfPresent()
, pero la mejora es cuestionable:
map.computeIfPresent("key1", (k, v) -> { v.remove("a2"); return v; });