簡體   English   中英

如何使用 java 知道內部 map 中是否存在密鑰?

[英]How to know if a key exists in inner map using java?

在下面的 map 中,我如何知道 key3 是否存在而無需通過蠻力 for 循環並檢查每個內部 map。 鑒於所有鍵都是唯一的,我們是否有任何庫函數可以做到這一點?

"map": {
        "key1": "value1",
        "innerMap": {
          "key2": "value2",
          "innerMap2": {
            "key3": "value3"
          }
        }
      }

假設您的圖片描述了Map ,那么“蠻力”樹遍歷是您的最佳選擇。

沒有用於搜索嵌套地圖的標准 Java SE API。

@f1sh 提到了進行字符串搜索的可能性......假設 map 實際上是 JSON。 有一些重要的警告:

  1. 搜索 JSON 字符串(或調用Map.toString()的結果)的字符串可能很脆弱。 例如,如果 map 中的包含該搜索字符串, .contains("\"key3\":")將給出錯誤匹配。

  2. Map渲染到 JSON(或其他)以進行字符串搜索將比進行搜索更昂貴。

  3. String.contains搜索可能需要查看序列化中的每個字符。 這就像樹遍歷一樣“蠻力”。


我能想到的唯一選擇不是“蠻力”是創建一個輔助數據結構; 例如 map 樹中所有(唯一)鍵的HashSet 創建后,可以在O(1)中查詢該集合......但創建它是O(N) ,其中N是樹中(非不同)鍵的數量。


最后,map 樹遍歷可能是一種遞歸方法,而不是(只是)一堆for循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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