我想弄清楚如何檢索存儲(chǔ)在 ArrayList 中的值,存儲(chǔ)在 Hashmap 中。這是我所擁有的:HashMap<String, ArrayList<Record>> records = new HashMap<>();這個(gè)哈希圖中的關(guān)鍵不是我要找的。在 Record 對(duì)象中調(diào)用了一個(gè)方法getRecordId(),我希望能夠recordId通過 if 語句評(píng)估 this 是否存在于 ArrayList 中。例子:if(records.values.exists(recordId)){ ...do something ...}本質(zhì)上,我想遍歷 ArrayList 中的所有值以查看該記錄 ID 是否存在,如果存在,我將存儲(chǔ)密鑰并計(jì)算一些內(nèi)容。我該怎么做?編輯:在發(fā)布這個(gè)問題之后,我想我正在做一些事情。這個(gè)怎么樣:Set<Map.Entry<String, ArrayList<Record>>> entrySet = records.entrySet();for(Map.Entry<String, ArrayList<Record>> data : entrySet){ for(Record entry : data.getValue()) { if(recordId.equals(entry.getRecordId())) { // Do something here return ""; } }}如果找到了記錄 ID,我需要離開循環(huán),因?yàn)橛涗?ID 是唯一的。
3 回答

白板的微信
TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您正在使用,Java 8
您可以使用stream
:
//List of keys which contains your desired Record at it's value(ArrayList) List<String> requiredListOfKeys = records.keySet().stream() .filter(x -> records.get(x) .contains(record)) .collect(Collectors.toList());

12345678_0001
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
一種方法是流式傳輸?shù)貓D值,對(duì)于每個(gè)值(這是一個(gè)列表),流式傳輸它并找到Record與您的搜索條件匹配的第一個(gè)實(shí)例。然后,如果找到了這樣的記錄,請(qǐng)對(duì)它執(zhí)行任何操作:
boolean found = records.values().stream()
.flatMap(List::stream) // or .flatMap(list -> list.stream())
.filter(entry -> recordId.equals(entry.getRecordId()))
.findFirst()
.ifPresent(entry -> {
// do something with the found record
});
添加回答
舉報(bào)
0/150
提交
取消