我有一个关于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.
答案 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());