[英]How can I iterate through a hashset within a hashmap?
我正在嘗試遍歷包含 8 個條目的哈希圖。 然而,這些條目之一是其中包含 2 個對象的哈希集。 我需要遍歷哈希集以從中獲取值。
代碼的第一部分有效,我遍歷哈希圖並查找我需要的鍵“氣球”。 我需要幫助來遍歷哈希集以從 2 個氣球對象中檢索詳細信息。
List<PartyItem> myPartyList = new ArrayList<>();
Map<String, Object> types = myPartyList .getPartyItems();
for (Map.Entry<String, Object> entry : types.entrySet()) {
if (StringUtils.contains(entry.getKey().toString(), "balloon")) {
//This is where I need to loop through the balloon hashset to get the entries and values from within.
myPartyList .add(balloon);
然后我希望能夠從 myPartyList 中獲取鍵和值以將它們分配給我的代碼中的變量。
謝謝
測試一個值是否是一個Set
,如果是,則將所有項目添加到您的列表中。
if (StringUtils.contains(entry.getKey().toString(), "balloon")
&& entry.getValue() instanceof Set) {
myPartyList.addAll((Set)entry.getValue());
}
不是遍歷條目,而是遍歷鍵,當您找到氣球時,請獲取哈希集以遍歷它。
for(String key: types.keySet()){
if(StringUtils.contains(key, "balloon")){
for(Object object: types.get(key)){
//do what you need with object
}
}
}
你可以像這樣迭代:
for(String key: Map.keySet()){
if(StringUtils.contains(key, "balloon")){
Iterator<String> it = hashMap.get("balloon").iterator();
while(it.hasNext()){
// your code here
}
}
}
通常,您將哈希映射構建為 <key, value> 並通過相應的鍵訪問您的值。 但它們必須完全匹配。 在您的情況下,您的哈希圖如下所示:
Map<String, Object> partyItems = myPartyList.getPartyItems();
// or maybe even
Map<String, PartyItem> partyItems = myPartyList.getPartyItems();
獲取價值就像這樣簡單:
Object partyItem = partyItems.get("baloon");
如果你不知道,如果你的paryItems包含你的關鍵字的值baloon
,你可以檢查第一:
if (partyItems.contains("baloon")) {
Object partyItem = partyItems.get("baloon");
}
如果您正在尋找關鍵匹配baloon
的一部分:
List<PartyItem> myFilteredPartyItems = partyItems.entrySet().stream()
.filter(e -> e.getKey().contains("baloon"))
.collect(Collectors.toList()))
這稱為面向流的編程(查看Java Stream API ),如果您至少運行 Java 8,則可以使用它們。 它的作用是將 List 的條目轉換為流,然后刪除鍵中不包含baloon
所有內容,並將未刪除的結果流轉換回列表。
您還可以在此處找到有關如何在 Java 中使用流的信息豐富的教程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.