JAVA中如何取出两个不同List对象(对象一致)中所有不同的对象的集合
2017-10-11 10:41
696 查看
昨天开发的时候遇到一个需求,需要在两个不同的List对象中,取出所有不同的对象的集合,大家看的时候
4000
可能会觉得绕口,下面简单举例说明:
对象 Student
属性 id,name
两个集合
1、List<Student> lists1 = new ArrayList<Student>();
Student student1 = new Student();
student1.setId(1):
student1.setName("1");
lists1.add(student1);
Student student2 = new Student();
student2.setId(2):
student2.setName("2");
lists1.add(student2);
2、List<Student> lists2 = new ArrayList<Student>();
Student student3 = new Student();
student3.setId(1):
student3.setName("1");
lists2.add(student3);
可以看到 list1 和 list2 集合中的对象是相同的,现在的需求是比较 list1 和 list2 取出所有不同的对象集合,也就是 student2
在这里我们主要用到的方法是重写Student类中的 equals 和 hashcode 方法。把属性 id 和 name作为比较的key,这样就可以实现了。
判断的时候可以这样操作:
通过循环的时候判断,我这里只是提供一种参考的是方式,以少的集合作为循环的集合
for(int i=0;i<list2.size();i++){
if(! lists1.contains(lists2.get(i))){
//把对应的对象加入到返回的结果集List中去就可以了
}
}
以上就是我个人的心得,亲测可用。
4000
可能会觉得绕口,下面简单举例说明:
对象 Student
属性 id,name
两个集合
1、List<Student> lists1 = new ArrayList<Student>();
Student student1 = new Student();
student1.setId(1):
student1.setName("1");
lists1.add(student1);
Student student2 = new Student();
student2.setId(2):
student2.setName("2");
lists1.add(student2);
2、List<Student> lists2 = new ArrayList<Student>();
Student student3 = new Student();
student3.setId(1):
student3.setName("1");
lists2.add(student3);
可以看到 list1 和 list2 集合中的对象是相同的,现在的需求是比较 list1 和 list2 取出所有不同的对象集合,也就是 student2
在这里我们主要用到的方法是重写Student类中的 equals 和 hashcode 方法。把属性 id 和 name作为比较的key,这样就可以实现了。
判断的时候可以这样操作:
通过循环的时候判断,我这里只是提供一种参考的是方式,以少的集合作为循环的集合
for(int i=0;i<list2.size();i++){
if(! lists1.contains(lists2.get(i))){
//把对应的对象加入到返回的结果集List中去就可以了
}
}
以上就是我个人的心得,亲测可用。
相关文章推荐
- Java 比较两个List的差异,并取出不同的对象
- java 如何获取得到两个list中不同的数据
- Java 查找两个有复杂对象的集合中的不同元素和相同的元素
- java两个list中保存bean对象,找出其中某一属性不同的元素
- 有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样高效取出两个集合中不同的元素?
- 取出两个list集合中不同的元素
- java实现两个不同list对象合并后并排序
- Java类对象排序问题---如何对不同类的所有对象进行排序
- java两个list中保存bean对象,找出其中某一属性不同的元素
- java 利用反射 从数据库取出数据对象list 类似hibernate
- 学习体会:在JAVA中如何判断两个对象是否相等
- 使用Java获取两个日期间所有月份的集合
- Java中list集合的交集和差集的用法和如何将数组转换为集合的方法
- java中对集合对象list的几种循环访问
- java中对List对象集合进行排序
- java中如何取到一个对象的所有属性值,并且在创建一个相同的对象
- java方法,返回两个日期内的所有date集合,根据开始时间、结束时间得到两个时间段内所有的日期
- java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json
- 如何从List集合中删除对象
- 关于JAVA中两个list或者两个set集合取他们相同的元素