java可以比较Map<Integer,ArrayList<String>>和ArrayList<String>
我创建了一个Map<Integer, ArrayList<String>> map
,我想将映射中的每个值与一个ArrayList<String> likeList
进行比较,如果它们匹配,则获取密钥。我稍后会带钥匙来用
我试着这样运行我的代码,但它不起作用,因为它什么也不返回:
for (int key : map.keySet()) {
if(map.get(key).equals(likeList)){
index = key;
Log.d("IndexN", String.valueOf(index));
}
}
然后,我尝试了这个:
int index = 0;
for (Map.Entry<Integer, ArrayList<String>> entry : map.entrySet()) {
if(entry.getValue().equals(likeList)){
index = entry.getkey();
}
}
你知道吗
# 1 楼答案
添加密钥列表以存储所有匹配项
# 2 楼答案
从这条评论中,我了解到,一旦在地图中找到匹配项,就应该记录
index
,并停止进一步的处理。换句话说,要么地图中只有一个匹配的likeList
,要么你想在地图中找到第一个匹配的likeList
。如果是,则需要在找到匹配项后立即中断循环(如下所示)请注意,只有当映射只有一个匹配项
likeList
或映射是一个LinkedHashMap时,每次执行它时,这将为您提供相同的值。如果它是一个HashMap
,并且它有多个likeList
匹配项,那么每次执行它时可能会得到不同的值,因为HashMap
不能保证其条目的顺序但是,如果映射中可能有多个
likeList
匹配项,并且希望记录所有匹配项并获取相应键的列表,则可以按如下方式执行: