JAVA:如何删掉list里面重复的Map?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA:如何删掉list里面重复的Map?相关的知识,希望对你有一定的参考价值。
如:new一个map=map.put("1","abc");list.add(map);new一个map=map.put("2","abc");再list.add(map);然后再new一个map=map.put("3","jsk");再list.add(map);然后再new一个map=map.put("4","abc");list.add(map);
想要运行后删掉2,4的map,怎么实现捏?小弟初学,求代码
算我无聊,这是代码,clearList是方法,main是给你写的一个测试用的例子
public class Test
public static void clearList(List<Map<String, String>> list)
if (list == null) return;
Set<String> set = new HashSet<String>();
for (Iterator<Map<String, String>> it = list.iterator(); it.hasNext();)
//里面的map至少有一个元素,不然报错
String value = it.next().entrySet().iterator().next().getValue();
if (set.contains(value))
it.remove();
else
set.add(value);
public static void main(String args[])
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map1 = new HashMap<String, String>();
map1.put("1", "abc");
Map<String, String> map2 = new HashMap<String, String>();
map2.put("2", "abdc");
Map<String, String> map3 = new HashMap<String, String>();
map3.put("3", "abc");
list.add(map1);
list.add(map2);
list.add(map3);
clearList(list);
for (Iterator<Map<String, String>> it = list.iterator(); it.hasNext();)
String value = it.next().entrySet().iterator().next().getValue();
System.out.println(value);
Java中List集合转Map集合报错:Duplicate key
一、问题由来
最近生成环境刚发布了一个版本,本人负责优化的一个功能在进行测试时,报错了一个异常,duplicate key;去百度里面看了一下,
意思很明确就是建重复,而且错误是在Java代码中抛出来的。
二、问题分析
自己立马去查看Java代码,发现这样写是没有问题的,问题出在查询出来的结果进行转换时,键有重复的,可是有不同的值。因此
才报了一个键重复的错误。搞清楚问题的原因后就知道怎么解决了。
三、解决方案
解决办法的核心就是让返回的结果中,键没有重复的值,这样就可以解决问题。这个是原来错误的查询语句,
更改后的查询语句为
主要做了两个改动,一个是按照键进行分组查询,这样就可以去重,其次是取值时,使用max函数取最大值即可。发布到测试环境,添加了测试数据
后,测试结果正确,修改 方式可行。
以上是关于JAVA:如何删掉list里面重复的Map?的主要内容,如果未能解决你的问题,请参考以下文章