HashMap中的列表删除一个值

Jav*_*er1 1 java list hashmap

我在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"的列表中单独删除值"两个"..

Era*_*ran 6

您获得通过的值get,并从删除相关元素Listremove:

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"));改用它来修复它.