繁体   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