簡體   English   中英

如何使用 java 從 map 中刪除重復項

[英]how to remove duplicates from the map using java

我在 finalMapNode 上添加了一些項目,使用 map 為 d3 創建 json。 我不想要任何重復的項目。 如何檢查.finalmapNode 將重復項放在 map 上。我不想要重復項。如果項目可用,則不應放在 map 上。 如果 id 是可用的,那么項目不應該放在 finalmapnode 中。

注意::如果 id 是可用的,那么 item 不應該放在 finalmapnode 中。

List<Map<String, Object>> listNodeMap = new ArrayList<Map<String, Object>>();
Map<String, Object> finalMapNode2 = new TreeMap<String, Object>();
    Map<String, Object> finalMapNode = new TreeMap<String, Object>();


                   //if id is avalable then item should not put in the finalmapnode.

                    finalMapNode.put("id", Integer.parseInt(source2.get(z))+"");
                    finalMapNode.put("name",source.get(z));
                    finalMapNode.put("displayname", source.get(z));
                    finalMapNode.put("image", "/xxxxx/resources/icon/location.png");
                    finalMapNode.put("type", "location");
                    finalMapNode.put("group", 0);
                    finalMapNode.put("opacity", 100);

                    finalMapNode2.put("id", Integer.parseInt(target2.get(z))+"");
                    finalMapNode2.put("name",target.get(z));
                    finalMapNode2.put("displayname", target.get(z));
                    finalMapNode2.put("image", "/xxxxx/resources/icon/location.png");
                    finalMapNode2.put("type", "location");
                    finalMapNode2.put("group", 0);
                    finalMapNode2.put("opacity", 100);

                listNodeMap.add(finalMapNode);
                listNodeMap.add(finalMapNode2);

當您嘗試添加 hashmap 中已有的 KEY 時,它將覆蓋之前的 KEY 的 VALUE 並添加新的 VALUE。 因此,在嘗試添加 KEY 和 VALUE 之前,由您來驗證 map。 您可以使用finalmapnode.containsKey(KEY); 驗證然后添加值。

編輯

只需檢查以下方法是否適合您!

private static void putMap(String strKey, Object object, Map<String, Object> map){
    if(!map.containsKey(strKey)){
        map.put(strKey, object);
    }
}

在你的情況下,而不是使用

finalMapNode.put("name",source.get(z));

您可以使用

putMap("name",source.get(z), finalMapNode);

如果您添加重復的 KEYS,上述方法將不會覆蓋這些值。 傳遞您聲明為finalMapNodeKEYVALUEMap

試試這個,看看。

謝謝!

 HashMap<String, String> map = new HashMap<String, String>();
            map.put("A", "1");
            map.put("B", "2");
            map.put("C", "2");
            map.put("D", "3");
            map.put("E", "3");
            HashMap<String, String> mapNew = new HashMap<String, String>();
            
                for(String s :map.keySet())
                {
                    //String value = map.get(s);
                    System.out.println(s +"=="+map.get(s));
                    
                    if(!mapNew.containsValue(map.get(s)))
                    {
                        mapNew.put(s, map.get(s));
                    }
                 }
                System.out.println(mapNew);

暫無
暫無

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

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