我在hashmap中有一个列表,
HashMap<String, List<String>>)
Run Code Online (Sandbox Code Playgroud)
因此,一个键具有多个值,如何仅删除特定键的一个值.
通常我们直接删除值..
hashmap.remove(key);
Run Code Online (Sandbox Code Playgroud)
删除值..但我需要从值列表中删除一个值..
List<String> list = Arrays.asList("one","two","three");
HashMap<String, List<String>> hm = new HashMap<String, List<String>> ();
hm.add("1",list);
Run Code Online (Sandbox Code Playgroud)
我不知道如何从密钥"1"的列表中单独删除值"两个"..
您获得通过的值get,并从删除相关元素List有remove:
hm.get("1").remove("two");
Run Code Online (Sandbox Code Playgroud)
当然,你必须保护自己免受获得回报的情况null:
hm.computeIfPresent("1",(k,v)->{v.remove("two");return v;});
Run Code Online (Sandbox Code Playgroud)
这类似于:
if (hm.get("1") != null) {
hm.get("1").remove("two");
}
Run Code Online (Sandbox Code Playgroud)
另请注意,List您放入的Map(返回者Arrays.asList())具有固定大小,这意味着您无法从中删除元素.打电话remove就会扔掉UnsupportedOperationException.你可以List<String> list = new ArrayList<>(Arrays.asList("one","two","three"));改用它来修复它.