我在hashmap中有一个列表,
HashMap<String, List<String>>)
因此,一个键有多个值,如何只删除特定键的一个值..
通常我们直接删除值..
hashmap.remove(key);
删除了值..但我需要从值列表中删除一个值..
List<String> list = Arrays.asList("one","two","three");
HashMap<String, List<String>> hm = new HashMap<String, List<String>> ();
hm.add("1",list);
我不知道如何从密钥“1”的列表中单独删除值“2”。
答案 0 :(得分:5)
您可以通过get
获取该值,并使用List
从remove
中移除相关元素:
hm.get("1").remove("two");
当然,你必须保护自己免受返回null
的情况:
hm.computeIfPresent("1",(k,v)->{v.remove("two");return v;});
类似于:
if (hm.get("1") != null) {
hm.get("1").remove("two");
}
另请注意,您放入List
(由Map
返回)的Arrays.asList()
具有固定大小,这意味着您无法从中删除元素。在其上调用remove
会抛出UnsupportedOperationException
。您可以使用List<String> list = new ArrayList<>(Arrays.asList("one","two","three"));
来修复它。
答案 1 :(得分:0)
在从中移除元素之前,您需要先获取内部列表。
这样的事情应该做:
php7