查找如果HashMap包含或不包含值,则仅删除该值

时间:2014-11-27 13:53:22

标签: java arraylist iterator hashmap

假设我们有以下代码:

public class HashMapTest {
    public static void main(String[] args) {
        HashMap<String, ArrayList<String>> map1 = new HashMap<>();
        ArrayList<String> al = new ArrayList<>();
        al.add("A");
        al.add("B");
        al.add("C");
        map1.put("1", al);
    }
}

首先HashMap看起来像:

{{"1"},{"A","B","C"}}

现在,我想在"B"中找到值HashMap,并希望从arraylist中的hashmap中删除此值。

所以最终的结果看起来像是:

{{"1"},{"A","C"}}

有人可以告诉我怎么做吗?

2 个答案:

答案 0 :(得分:3)

在HasMap中使用HashSet而不是ArrayList。

HashMap<String, HashSet<String>> map1 = new HashMap<>();
HashSet<String> al = new HashSet<>();
al.add("A");
al.add("B");
al.add("C");
map1.put("1", al);

删除:

map1.get("1").remove("B") 

答案 1 :(得分:1)

目前,Java不支持使用hashmap中的值删除元素,因此您必须迭代所有元素并获取arraylist并检查该值是否存在(如果存在)而不是删除该值。如果值是静态的,你可以使用map1.get("1").remove("B"),如果它是动态的,那么提供一个输入源,然后迭代地图,然后迭代arraylist检查值是否仍然存在,如果是,则删除它`