[英]Can compare values from Map<Integer, ArrayList<String>> with ArrayList<String>
我創建了一個Map<Integer, ArrayList<String>> map
並且我想將 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();
}
}
你有什么主意嗎?
當我嘗試上面的代碼時,它不返回索引。
從這條評論中,我了解到,一旦您在 map 中找到匹配項,則應記錄index
並停止進一步處理。 換句話說,要么在likeList
中只有一個 likeList 匹配,要么你想在 map 中找到likeList
的第一個匹配。 如果是,您需要在找到匹配項后立即中斷循環(如下所示)。
for (int key : map.keySet()) {
if (map.get(key).equals(likeList)) {
Log.d("IndexN", String.valueOf(index));
break;
}
}
請注意,這將為您提供相同的值,每次執行時,僅當 map 只有一個likeList
或 map 是LinkedHashMap時。 如果它是HashMap
並且它有多個likeList
,則每次執行它時可能會得到不同的值,因為HashMap
不保證其條目的順序。
但是,如果likeList
中可能有多個 likeList 匹配,並且您想要記錄所有匹配並獲取相應鍵的列表,則可以執行以下操作:
List<Integer> indexList = new ArrayList<>();
for (int key : map.keySet()) {
if (map.get(key).equals(likeList)) {
Log.d("IndexN", String.valueOf(index));
indexList.add(key);
}
}
// Display the list of corresponding keys
System.out.println(indexList);
添加密鑰列表以存儲所有匹配項
List<Integer> indices = new ArrayList<>();
for (int key : map.keySet()) {
if (map.get(key).equals(likeList)) {
indices.add(key);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.