java中集合set去重使用
2016-07-08 16:59
666 查看
第一种,List<Integer> , List<String> 用set去重时,无需重写equals方法
List<Integer> list = new ArrayList<Integer>();
for (int i = 0 ; i < 10 ; i++ ) {
list.add(i);
}
list.add(3);
list.add(5);
for (int m = 0 ; m < list.size() ; m++ ) {
System.out.println("list的内容是:"+list.get(m));
}
Set<Integer> set = new HashSet<Integer>();
for(int j = 0 ; j < list.size() ; j++ ){
set.add(list.get(j));
}
//第一种:用Iterator遍历
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
Integer str = it.next();
System.out.println("set用Iterator遍历的内容是:"+str);
}
//第二种:for循环遍历:
for (Integer str : set) {
System.out.println("第二种遍历:"+str);
}
达到去重了效果
第二种,当是对象时,即List<Person>去重时,必须所有属性的值相同,必须在实体中重写equals以及hashCode方法
//对象列表
List<Person> perList = new ArrayList<Person>();
//创建各种对象,初始化数据
Person p1 = new Person();
p1.setId(1);
p1.setName("zhang");
p1.setAge(22);
perList.add(p1);
Person p2 = new Person();
p2.setId(2);
p2.setName("san");
p2.setAge(22);
perList.add(p2);
Person p3 = new Person();
p3.setId(3);
p3.setName("zhangsan");
p3.setAge(22);
perList.add(p3);
Person p4 = new Person();
p4.setId(4);
p4.setName("zs");
p4.setAge(22);
perList.add(p4);
Person p5 = new Person();
p5.setId(5);
p5.setName("zhangs");
p5.setAge(22);
perList.add(p5);
Person p6 = new Person();
p6.setId(1);
p6.setName("zhang");
p6.setAge(22);
perList.add(p6);
Set<Person> pSet = new HashSet<Person>();
for(Person pe : perList){
System.out.println("List遍历输出:"+pe.toString());
pSet.add(pe);
}
for (Person p : pSet) {
System.out.println("转换成set后:"+p.toString());
}
/**
* 输出结果
*/
// List遍历输出:Person [id=1, age=22, name=zhang]
// List遍历输出:Person [id=2, age=22, name=san]
// List遍历输出:Person [id=3, age=22, name=zhangsan]
// List遍历输出:Person [id=4, age=22, name=zs]
// List遍历输出:Person [id=5, age=22, name=zhangs]
// List遍历输出:Person [id=1, age=22, name=zhang]
// 转换成set后:Person [id=5, age=22, name=zhangs]
// 转换成set后:Person [id=4, age=22, name=zs]
// 转换成set后:Person [id=1, age=22, name=zhang]
// 转换成set后:Person [id=3, age=22, name=zhangsan]
// 转换成set后:Person [id=2, age=22, name=san]
同样达到了去重效果
List<Integer> list = new ArrayList<Integer>();
for (int i = 0 ; i < 10 ; i++ ) {
list.add(i);
}
list.add(3);
list.add(5);
for (int m = 0 ; m < list.size() ; m++ ) {
System.out.println("list的内容是:"+list.get(m));
}
Set<Integer> set = new HashSet<Integer>();
for(int j = 0 ; j < list.size() ; j++ ){
set.add(list.get(j));
}
//第一种:用Iterator遍历
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
Integer str = it.next();
System.out.println("set用Iterator遍历的内容是:"+str);
}
//第二种:for循环遍历:
for (Integer str : set) {
System.out.println("第二种遍历:"+str);
}
达到去重了效果
第二种,当是对象时,即List<Person>去重时,必须所有属性的值相同,必须在实体中重写equals以及hashCode方法
//对象列表
List<Person> perList = new ArrayList<Person>();
//创建各种对象,初始化数据
Person p1 = new Person();
p1.setId(1);
p1.setName("zhang");
p1.setAge(22);
perList.add(p1);
Person p2 = new Person();
p2.setId(2);
p2.setName("san");
p2.setAge(22);
perList.add(p2);
Person p3 = new Person();
p3.setId(3);
p3.setName("zhangsan");
p3.setAge(22);
perList.add(p3);
Person p4 = new Person();
p4.setId(4);
p4.setName("zs");
p4.setAge(22);
perList.add(p4);
Person p5 = new Person();
p5.setId(5);
p5.setName("zhangs");
p5.setAge(22);
perList.add(p5);
Person p6 = new Person();
p6.setId(1);
p6.setName("zhang");
p6.setAge(22);
perList.add(p6);
Set<Person> pSet = new HashSet<Person>();
for(Person pe : perList){
System.out.println("List遍历输出:"+pe.toString());
pSet.add(pe);
}
for (Person p : pSet) {
System.out.println("转换成set后:"+p.toString());
}
/**
* 输出结果
*/
// List遍历输出:Person [id=1, age=22, name=zhang]
// List遍历输出:Person [id=2, age=22, name=san]
// List遍历输出:Person [id=3, age=22, name=zhangsan]
// List遍历输出:Person [id=4, age=22, name=zs]
// List遍历输出:Person [id=5, age=22, name=zhangs]
// List遍历输出:Person [id=1, age=22, name=zhang]
// 转换成set后:Person [id=5, age=22, name=zhangs]
// 转换成set后:Person [id=4, age=22, name=zs]
// 转换成set后:Person [id=1, age=22, name=zhang]
// 转换成set后:Person [id=3, age=22, name=zhangsan]
// 转换成set后:Person [id=2, age=22, name=san]
同样达到了去重效果
相关文章推荐
- 浅谈Java设计模式(七)装饰模式(Decorator)
- java -- 将int 转为二进制,再提取二进制中每一位信息
- Eclipse常用的几个快捷键
- JAVA 仿XP画图板的总结
- 在windows平台不通过exe安装包安装java1.8
- 浅谈Java设计模式(六)适配器模式(Adapter)
- java将office文档,word,ppt,pdf文档转换成swf文件在线预览
- java 如何保证接口的安全性
- JAVA容器
- springmvc 复杂参数LIst<T> JSON参数绑定
- eclipse svn设置忽略文件
- 【SpringMVC学习03】SpringMVC中注解和非注解方式下的映射器和适配器总结
- 关于spring在程序中读取properties文件配置项的方法
- Java下利用Jackson进行Json的转化解析
- Spring对Hibernate事务管理
- JAVA使用POI如何导出百万级别数据
- Java集合源码分析(五)HashSet<E>
- Spring测试 其实很简单
- 浅谈Java设计模式(五)原型模式(Prototype)
- Java String类 传参的问题