HashMap中的列表删除一个值

时间:2018-03-28 05:24:28

标签: java list hashmap

我在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”。

2 个答案:

答案 0 :(得分:5)

您可以通过get获取该值,并使用Listremove中移除相关元素:

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