`

list集合去除重复对象

    博客分类:
  • java
 
阅读更多

对象重复是指对象里面的变量的值都相等,并不定是地址。list集合存储的类型是基础类型还比较好办,直接把list集合转换成set集合就会自动去除。

   当set集合存储的是对象类型时,需要在对象的实体类里面重写public boolean equals(Object obj) {} 和 public int hashCode() {} 两个方法。

  实体类

[html] view plain copy
 
print?
  1. public class Student {  
  2.   
  3. public String id;  
  4. public String name;  
  5. public Student() {  
  6. }  
  7. public Student(String id,String name) {  
  8. this.id = id;  
  9. this.name = name;  
  10. }  
  11. public String getId() {  
  12. return id;  
  13. }  
  14. public void setId(String id) {  
  15. this.id = id;  
  16. }  
  17. public String getName() {  
  18. return name;  
  19. }  
  20. public void setName(String name) {  
  21. this.name = name;  
  22. }  
  23. @Override  
  24. public boolean equals(Object obj) {  
  25. Student s=(Student)obj;   
  26. return id.equals(s.id) && name.equals(s.name);   
  27. }  
  28. @Override  
  29. public int hashCode() {  
  30. String in = id + name;  
  31. return in.hashCode();  
  32. }  
  33. }  
public class Student {

public String id;
public String name;
public Student() {
}
public Student(String id,String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
Student s=(Student)obj; 
return id.equals(s.id) && name.equals(s.name); 
}
@Override
public int hashCode() {
String in = id + name;
return in.hashCode();
}
}

测试类

[html] view plain copy
 
print?
  1. import java.util.ArrayList;  
  2. import java.util.HashSet;  
  3. import java.util.List;  
  4. import java.util.Set;  
  5.   
  6. public class QuSame {  
  7.       
  8.     public static void main(String[] args) {  
  9.         List<Student> stu = new ArrayList<Student>();  
  10.         stu.add(new Student("1","yi"));  
  11.         stu.add(new Student("3","san"));  
  12.         stu.add(new Student("3","san"));  
  13.         stu.add(new Student("2","er"));  
  14.         stu.add(new Student("2","er"));  
  15.         //set集合保存的是引用不同地址的对象  
  16.         Set<Student> ts = new HashSet<Student>();  
  17.         ts.addAll(stu);  
  18.           
  19.         for (Student student : ts) {  
  20.             System.out.println(student.getId()+"-"+student.getName());  
  21.         }  
  22.     }  
  23. }  
分享到:
评论

相关推荐

    list去掉重复对象

    一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。

    list集合去除重复对象的实现

    下面小编就为大家带来一篇list集合去除重复对象的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    两个list比较 取不同的对象

    比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法

    Java中List集合对象去重及按属性去重的8种方法

    主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下

    List集合多个复杂字段判断去重的案例

    今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    JAVA集合(List,Set,Map)

     (1) 单元素添加、删除操作: boolean add(Object o):将对象添加给集合 boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o (2) 查询操作: int size() :返回当前集合中元素的数量 boolean...

    Java中对List去重 Stream去重的解决方法

    主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下

    40道java集合面试题含答案(很全很详细)

    List接口是有序的集合,可以包含重复的元素。List接口提供了按照索引位置访问元素的方法,以及添加、删除和修改元素的操作。List接口的实现类包括ArrayList、LinkedList等。 Set接口是无序的集合,元素不能重复。...

    Java集合框架.pdf

    Java集合框架概述 Java集合框架是一个抽象数据类型的框架,它提供了一组接口和类,可用于处理各种...2、List接口 List接口是有序集合,可以存储重复元素。它定义了有序的列表,可以根据索引位置访问列表中的元素。List

    如何实现java8 list按照元素的某个字段去重

    主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的...

    python把转列表为集合的方法

    set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。 set 语法: class set([iterable]) 参数说明: iterable — 可迭代对象对象; 返回值: 返回新的集合对象。 将...

    Dbutils项目实例

    StringTrimmedResultSet :去除ResultSet中中字段的左右空格 Trim "&gt;1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 ...

    Java面试宝典2010版

    65、去掉一个Vector集合中重复的元素 66、Collection 和 Collections的区别。 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 68、你所知道的集合类都有哪些...

    java8集合源码分析-CollectionDemo:自己复习集合框架时候的例子

    内部使用的是一个HashMap集合key值当做我们存储的对象,value值是一个固定的Object对象 保证唯一性:元素hashCode和equals方法。hashCode方法相同,判断equals方法 ---LinkedHashSet: 有序,是HashSet的子类 2....

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()方法  8.4.2 Session的load()和get()方法  8.4.3 Session的update()方法  8.4.4 Session的...

    重构 改善既有代码的设计

     Encapsulate Collection 封装集合   Replace Record with Data Class 用数据类代替记录   *ReplaceType Code with Class 用类代替类型码   Replace Type Code with Subclasses 用子类代替类型码   ...

Global site tag (gtag.js) - Google Analytics