簡體   English   中英

如何遍歷哈希圖中的哈希集?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM