java-从排序的ArrayList中删除重复项,同时保留重复项中的某些元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-从排序的ArrayList中删除重复项,同时保留重复项中的某些元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1745字,纯文字阅读大概需要3分钟。
内容图文
![java-从排序的ArrayList中删除重复项,同时保留重复项中的某些元素](/upload/InfoBanner/zyjiaocheng/688/6a90c88f745b4af6aff2a0c662c0cf61.jpg)
好的,起初我以为这很简单.但是我想不出一种有效的方法来解决这个问题.我想出了一种蛮力的方式来解决这个问题,但这不是很优雅.我有一个ArrayList.联系人是VO类,具有多个成员-名称,区域,ID. ArrayList中存在重复项,因为不同的区域出现了多次.该列表按ID排序.这是一个例子:
条目0-名称:John Smith;地区:N;编号:1
条目1-名称:John Smith;地区:兆瓦;编号:1
条目2-姓名:约翰·史密斯;地区:S;编号:1
条目3-名称:Jane Doe;区域:NULL;编号:2
条目4-名称:杰克·布莱克;地区:N;编号:3
条目6-名称:杰克·布莱克;地区:兆瓦;编号:3
条目7-名称:Joe Don;地区:NE;编号:4
我想通过将相同ID的重复区域组合在一起,将列表转换为以下内容.因此,最终列表应仅包含4个不同的元素,并将区域组合在一起.
因此输出应如下所示:
条目0-名称:John Smith;地区:N,MW,S;编号:1
条目1-名称:Jane Doe;区域:NULL;编号:2
条目2-名称:杰克·布莱克;地区:N,MW;编号:3
条目3-名称:Joe Don;地区:NE;编号:4
您对解决此问题的最佳方法有何看法?我不是在寻找实际的代码,而是寻求最佳方法来完成它的想法或技巧.
谢谢你的时间!!!
解决方法:
您可以在将它们转储(并合并重复项)到TreeMap中的同时对其进行迭代.然后从TreeMap的值的排序视图创建一个列表.
在示例代码中,我假设您有一个包含id,name和region字段的Entry类,最后一个是Region实例列表.可以轻松地将其更改为Set,将Region更改为Strings或您使用的任何内容.该示例在将条目插入地图之前将其复制,因为在合并到其他条目时会对其进行修改.
SortedMap<Integer, Entry> mergedEntriesMap = new TreeMap<Integer, Entry>();
for (Entry e : entries) {
if (mergedEntriesMap.contains(e.id)) {
Entry m = mergedEntriesMap.get(e);
m.regions.addAll(e.regions);
} else {
Entry m = new Entry();
// copy the entry to keep the original array clean
m.id = e.id;
m.name = e.name;
m.regions = new ArrayList<Region>(e.regions);
mergedEntriesMap.put(m.id, m);
}
}
List<Entry> mergedEntries = new ArrayList<Entry>(mergedEntriesMap.values());
内容总结
以上是互联网集市为您收集整理的java-从排序的ArrayList中删除重复项,同时保留重复项中的某些元素全部内容,希望文章能够帮你解决java-从排序的ArrayList中删除重复项,同时保留重复项中的某些元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。