比较ArrayList值和HashMap值

时间:2017-02-07 20:03:23

标签: java dictionary arraylist hashmap

我有一个关于ArrayList值与HashMap值的比较的小查询,如果它们相等则提取键值。我正在读取两个文件并分别存储在ArrayList和HashMap中。我必须比较这些值并从HashMap中提取密钥。

例如:

ArrayList<String> list=new ArrayList<String>();
list.add("A");
list.add("B");  
list.add("C");  
list.add("D");  
Iterator itr=list.iterator();  
while(itr.hasNext()){  
    System.out.println(itr.next());  
}

HashMap<String,String> hm=new HashMap<String,String>();  
hm.put("Key A","A");  
hm.put("Key B","B");  
hm.put("Key C","C");  
hm.put("Key D","D");  
for(Map.Entry m : hm.entrySet()){  
    System.out.println(m.getKey() + " " + m.getValue());  
}

我必须比较ArrayList和HashMap,如果它们都包含值&#34; A&#34;然后应该返回密钥A.

2 个答案:

答案 0 :(得分:2)

只需迭代HashMap并查看值是否与ArrayList

中的值匹配
    HashMap<String,String> hm=new HashMap<String,String>();
    hm.put("Key A","A");
    hm.put("Key B","B");
    hm.put("Key C","C");
    hm.put("Key D","D");
    for(Map.Entry m : hm.entrySet()){
        if (list.contains(m.getValue()))
            System.out.println("Bingo: " + m.getKey());
    }

答案 1 :(得分:2)

作为bc004346答案的替代方案,你也可以使用Streams以功能方式解决这个难题:

List<String> result = hm.entrySet().stream()
    .filter(entry -> list.contains(entry.getValue()))
    .map(entry -> entry.getKey())
    .collect(Collectors.toList());