去除集合中的重复对象
来源:互联网 发布:hyperion软件教学 编辑:程序博客网 时间:2024/05/17 02:03
在做想项目时遇到这样一种情况,就是遇到这样一种情况,就是删除一个集合中的重复对象,如果是基本数据类型,那就很少删了,但如果是对象了,你再以那样的方式删除就不行了,因为在遍历集合时是不能修改集合数据(有一个list可以,但是我没有测试),我感觉深刻理解equals和hashcode是很有必要的
我直接上传代码了
package com.xzq.test;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;public class Test1 { /** * @param args */ public static void main(String[] args) { ArrayList<WorkItem> arraylist = new ArrayList<WorkItem>(); arraylist.add(new WorkItem("1", "name")); arraylist.add(new WorkItem("2", "name")); arraylist.add(new WorkItem("1", "name")); arraylist.add(new WorkItem("4", "name")); arraylist.add(new WorkItem("4", "name")); arraylist.add(new WorkItem("5", "name")); arraylist.add(new WorkItem("3", "name")); arraylist.add(new WorkItem("1", "name")); arraylist.add(new WorkItem("7", "name")); remove(arraylist); for (WorkItem workItem : arraylist) { System.out.println(workItem.id + " " + workItem.name); } } /** * 通过循环删除 * * @param list */ public static void remove(List<WorkItem> list) { int size = list.size(); for (int i = 0; i < size - 1; i++) { for (int j = size - 1; j > i; j--) { if (list.get(j).equals(list.get(i))) { list.remove(j); } } } } /** * 通过HashSet删除 * * @param list */ public static void removeHashSet(List<WorkItem> list) { HashSet<WorkItem> h = new HashSet<WorkItem>(list); list.clear(); list.addAll(h); } /** * 删除并保持原来的顺序 * * @param list */ public static void removeOrder(List<WorkItem> list) { HashSet<WorkItem> set = new HashSet<WorkItem>(); ArrayList<WorkItem> newList = new ArrayList<WorkItem>(); for (Iterator<WorkItem> iter = list.iterator(); iter.hasNext();) { WorkItem element = iter.next(); if (set.add(element)) { newList.add(element); } } list.clear(); list.addAll(newList); }}
package com.xzq.test;public class WorkItem { public String id; public String name; public WorkItem(String id, String name) { this.id = id; this.name = name; } @Override public boolean equals(java.lang.Object obj) { if (!(obj instanceof WorkItem)) { return false; } WorkItem workItem = (WorkItem) obj; return id.equals(workItem.id); } @Override public int hashCode() {//hashCode 只是一个数值,有N种实现方式,这只是普通的一种 return id.hashCode(); }}
- 去除集合中的重复对象
- 去除List集合中的重复对象,去除对象!
- 去除ArrayList集合中的重复自定义对象元素
- list集合去除重复对象
- list集合去除重复对象
- List集合去除重复对象
- List集合去除重复对象
- list集合去除重复对象
- list集合去除重复对象
- list集合去除重复对象
- 去除集合中的重复元素
- 去除list中的重复对象
- 去除LIST中的重复对象
- 集合框架_去除ArrayList集合中的重复自定义对象元素案例
- 去除集合中重复的对象
- list集合去除重复对象的实现
- 去除对象中的类型集合
- 去除ArrayList集合中的重复元素
- 第十三周实验报告(2)
- 解决freebsd用ssh无法登陆
- 在winForm窗体上加上DialogResult作为返回值
- C#里的await【占坑以后写】
- 技术大牛谈HTML 5设计原理(1)
- 去除集合中的重复对象
- 开始使用C++11的9个理由
- sh脚本异常:/bin/sh^M:bad interpreter: No such file or directory
- 技术大牛谈HTML 5设计原理(2)
- SQL Server 2005\2008 配置远程
- 技术大牛谈HTML 5设计原理(3)
- java 实现 md5
- 技术大牛谈HTML 5设计原理(4)
- 利用javascript防止用户端重复提交表单(学习方立勋课程总结)