比较两个list对象,1、找出相同ID,其他对象属性的值不相同的数据;2、找到不存在这个ID的

举个例子:
一个student对象,包含的属性有ID,name,age;
Student1.setID(1);
Student1.setName("张三");
Student1.setAge("20");
Student2.setID(2);
Student2.setName("李四");
Student2.setAge("30");
Student3.setID(3);
Student3.setName("王五");
Student3.setAge("40");
Student4.setID(1);
Student4.setName("王五");
Student4.setAge("20");
list1.add(student1);
list1.add(student2);
list1.add(student3);
list2.add(student4);
list2.add(student2);
以list1为基准,比较两个list对象,找出list2中没有的对象和找出list1中相同ID其他对象属性不相同的对象。
分别放到两个新的list中。
也就是找出相同ID,list1中作出修改的对象;list1中有,list2中没有的。
(还是昨天的问题,但是今天早上不知道怎么就不见了,所以又提了一下。)

0

2个回答

 class Student {
...//现有代码
//加上
    @Override  
    public boolean equals(Object o) {  
        if (o == this) return true;  
        if (!(o instanceof Student)) {  
            return false;  
        }  
        Student s = (Student) o;  
        return s.getID() == this.getID(); 
    }  
    @Override  
    public int hashCode() {  
        return this.getID();
    }  
}
0
weixin_38299517
琉星之云 回复weixin_38299517: 对对象和对象的方法理解的不够
一年多之前 回复
weixin_38299517
琉星之云 问题解决了
一年多之前 回复
weixin_38299517
琉星之云 回复caozhy:没太懂
一年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复weixin_38299517: 和数据多少没有关系
一年多之前 回复
weixin_38299517
琉星之云 回复xiewang1: 数据太多没法弄啊
一年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复weixin_38299517: 你得到id然后遍历下就有了。而且多个id,你没有修改时间,也没办法知道哪个是最新的。
一年多之前 回复
xiewang1
Linux_para 两个for循环比较
一年多之前 回复
weixin_38299517
琉星之云 回复caozhy: 这个只能满足一种情况:list2中没有的ID对象,没法满足相同IDlist1中作出修改的。
一年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复weixin_38299517: 你得到了需要的id,然后再循环从list2里面找到需要的就可以了,不需要2个equals
一年多之前 回复
weixin_38299517
琉星之云 回复caozhy: 这样的话是没法满足需求的,总不能些两个equals方法吧
一年多之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复weixin_38299517: 是啊
一年多之前 回复
weixin_38299517
琉星之云 这个equals方法是ID相同的对象就认为是相同的,那么那些相同ID作出修改的,就找不到了。我可以这样理解吗?
一年多之前 回复

重写student类的equals和hashCode方法,两个都要重写。
然后list1.removeAll(list2); 求差集

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java找出两个List中不同的值
List<String> list1 = new ArrayList<String>(){{add("a");add("b");add("c");add("d");}}; List<String> list2 = new ArrayList<String>(){{add("e");add("f");add("d");add("c");add(...
两个对应不同类的list如果有相同的id,差集去重
今天上班,review同事写的代码,发现了一个bug,这里就不贴出实际代码了,自己写段代码,来重现一下这个bug。(别纠结代码,我是用groovy写的,有的人说你的java代码为什么没有分号,汗)。 其实,目的就是两个对应不同类但是有相同字段的list进行去重复的操作。 有两个类A,B class A { Long id String detail Long ge
ES6 过滤掉两个数组中对象id相等的值
let arr1=[ { id:1, name:"苏罡", hobby:[ {id:1,name:"打篮球"}, {id:2,name:"吃饭"}, {id:3,name:'喝水'}, ] }, { id:2, name:"邓超", hobby:[ {id:1,name:"睡觉"}, {id:2,n...
两个list比较 取不同的对象
比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法
JAVA中如何取出两个不同List对象(对象一致)中所有不同的对象的集合
昨天开发的时候遇到一个需求,需要在两个不同的List对象中,取出所有不同的对象的集合,大家看的时候可能会觉得绕口,下面简单举例说明: 对象 Student  属性 id,name 两个集合 1、List lists1 = new ArrayList(); Student student1 = new Student(); student1.setId(1): student1.set
js 删除两个数组中id相同的对象
let arr1 = [{id:'1',name:'json'},{id:'2',name:'book'} ] let arr2 = [{id:'1',name:'json',age:'15'},{id:'2',name:'book',age:'16'},{id:'3',name:'ani',age:'17'}]  //ES6的方法 let add = arr2.filter(item =&g...
关于JAVA中两个list或者两个set集合取他们相同的元素
1.首先来弄下两个set集合,因为set要简单一些。 源码如下: public class Test { public static void main(String[] args) { Set set = new HashSet(); Set set1 = new HashSet(); set.add("s"); set.add("s1"); set.add("s2")...
java两个list中保存bean对象,找出其中某一属性不同的元素
在java中运用List集合保存对象,如果想找到两个list中不同的部分,可以用ArrayList的contains方法,遍历每一个对象,判断是否是相等的,如下: public static void getUncontain(List<String> list1, List<String> list2){ for(String str1 : list1){
C# List<T> 找出类中某个重复属性变量
在List中,找出类A中具有相同Phone属性的对象,并输出这些对象的ID值; 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Demo { class A { public int ID;
JAVA判断(获取)两个相同对象不同的数据
项目中需要获取修改前和修改后的不同数据并进行保存。 不知道高大上的做法,就写个工具类。 package com.shiyan.utils.object; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.String...
java根据list中对象的属性找出list重复数据或去除list重复数据
在实际开发中,经常会遇到需要找出(删除)一个list中某些元素的属性相同的元素,或者两个list中某些元素的属性相等的元素,这种方法很多,这里整理列出一些: 废话不说,上代码,有注释掉的你们自己看import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;publ
排重两个list 对象的map属性相同的
List&amp;lt;Persons&amp;gt; personsOneList = new ArrayList&amp;lt;&amp;gt;(); Persons onePerson = new Persons(); Map&amp;lt;String,Object&amp;gt; oneProperties = new HashMap&amp;lt;&amp;gt;(); oneProperties.put(&quot;id&quot;,&quot;001&quot;); oneProp...
Java 查找两个有复杂对象的集合中的不同元素和相同的元素
1、定义一个测试对象RolePermpublic class RolePerm{ private Long rid; private Long pid; public void setRid(Long rid){ this.rid=rid; } public Long getRid(){ return rid; }
往一个数组对象里面传值,如果id已经存在就替换id同一个对象里面的另一个值。没有就添加
&amp;lt;div  @click='choiceAnswer1(item ,keyindex)'  v-for=&quot;(item,keyindex) in arrayData&quot;&amp;gt;{{item}}&amp;lt;/div&amp;gt;   choiceAnswer1(data,index){//点击触发的函数 var answer1=[]; var  flag=false;//这里有个flag标记,用处...
通过stream()方法,一条代码计算List集合中相同字段的结果。
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。 Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。 这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。 元素流在管道中经过中间操作(intermediate operation)
多个List合并去除list中对象的某个属性值相同的对象
      List&amp;lt;Car&amp;gt; carList1 = getList1......; List&amp;lt;Car&amp;gt; carList2 = getList2......; //以车号作为key Map&amp;lt;String, Car&amp;gt; carMap = new HashMap&amp;lt;String, Car&amp;gt;(); for(Car car1 : carList1)...
Java 查找两个集合中的相同元素和不同元素
1简单元素的查找一、找到2个集合中相同和不同的元素本文分享的示例代码实现提取2个集合中相同和不同的元素此处需要使用Collection集合所提供的一个方法:removeAll(Cellection list),removeAll方法用于从列表中移除指定collection中包含的所有元素。语法 removeAll(Collection&amp;lt;?&amp;gt; c)c:包含从列表中移除元素的collect...
如何比较两个list集合里面的对象属性的元素的值是否相等,不相等则给出提示...
如何比较两个list集合里面的对象属性的元素的值是否相等,不相等则给出提示。 两个对象里面有相同的属性,我想判断相同的属性里面的元素值是否一样,不相等,给出相应提示? 谢谢大家!...
数组对象中找出id不一致的那个对象
var arr1=[{“id”:”1”,”name”:”哈哈哈”} ,{“id”:”a1”,”name”:”辅导费”} ,{“id”:”2”,”name”:”哦哦”} ] var arr2=[{“id”:”21”,”name”:”哈哈哈”} ,{“id”:”abc”,”name”:”辅导费”} ,{“id”:”2”,”name”:”哦哦”} ] var res = arr2.filter(n ...
Java比较两个对象是否相同并获得不同的字段
在使用数据库以及做详细的权限控制的时候,遇到要比较两个对象的情况,获得两个对象是否相同以及有那些字段被修改了,以判断用户是否有权限修改对象。apache commons提供的只有collections的对比,因此,本文利用jackson将对象序列化为map,通过对两个map的比较确定对象是否相等访问我的个人网站获取更多文章在撰写本文的时候,发现之前的方法麻烦了,研究了java map和list的eq
两个List比较,找出List中相同的值
今天做报表统计遇到这样的问题,就是分别有两个List对象,但是要获取到这两个List中相同的值做为返回数据 故写下此文章,希望对其他童靴有所帮助,不在多说,具体如操作下文: public class TestArray { public static void main(String[] args) { List list1 = new Arr...
比较两个List元素是否相同,查找出两个list的不同元素
比较两个List元素是否相同 /** * * @param * @param a * @param b * @return [Parameters description] * * @return boolean [Return type description] * @exception throws [Excetion] [Exception desc
Java比较两个对象并获取其中不相等的字段
写在前面 在工作中,我们经常会遇到这样的需求——比较两个对象是否相等,如果不相等的话,取出不相等的字段。 以下这些场景都需要我们对一个对象进行比较: 数据比对 做单元测试断言对象是否相等 前端要求对不相等的字段进行高亮显示 这种需求其实是非常简单的,但是如何优雅地解决这一类需求呢? 通常的做法是重写对象的 equals 方法。但是重写 equals 方法有很多不便之处,例如: 每次对象属性有...
[java基础]-- 找出2个集合相同和不同的元素(以及去除List中的重复元素)
一、找到2个集合中相同和不同的元素 此处需要使用Collection集合所提供的一个方法:removeAll(Cellection list) 实现代码如下: import java.util.ArrayList; import java.util.Collection; import java.util.List; public class Test { public  static v...
遍历数组对象,根据已知信息找到对应的对象
getIdByPoint(lng,lat,fromData){ let areaId=""; for(let item in fromData){ if(fromData[item].lat==lat && fromData[item].lng==lng){ console.log('找到了'); areaId=fromDat
把list中根据相同属性(合为一个),计算不同属性转化为另外一个list
1.原list封装 package test; import java.io.Serializable; import java.util.Date; /** * Created by hongdi.ren. */ public class PrinterStatusLog implements Serializable{ private int id; p
两个List集合使用removeAll()方法遇到的坑,无法移除掉两个集合相同的数据。
对比两个集合时,使用removeAll()方法无法删除掉它们相同的部分,之后写了一个demo测验一下removeAll()。 //测试包含基本数据类型String的两个list集合使用removeALL() 方法 public static void main(String[] args) { List stringList1 = new ArrayList ();
list集合移除某个属性相同的重复对象
现在有实体User,Role  需求是针对user集合list,过滤掉有roleid不相同的重复user 即如果有多个roleid只取需要的 看代码 List list = new ArrayList(); User user1 = new User(); User user2 = new User(); User user3 = new User(); User user4 =
将同一个list对象中具有相同属性的对象放入到一个新的list中
List<List<AirTimeRangeContract>> result = new ArrayList<List<AirTimeRangeContract>>(); Map<Long, List<AirTimeRangeContract>> map = new TreeMap<Long, List<AirTimeRangeContract>>(); for (A
两个List对象去除相同对象并添加true跟false字段
需求:我现在有两个list&amp;lt;User&amp;gt;,一个是全集所有元素集合A,一个是通过条件筛选出来的元素集合B。我需要把A中与B中的相同的对象,添加一个boolean字段赋值为true,其余为false。 思路:首先在实体类中添加一个字段 @Column private boolean tf; 然后重写equals和hashCode方法 @Override ...
js找出两个数组中的相同元素
之前在网上搜到的找出两个数组中的相同元素不对或者说是有缺陷,自己写了一个,适用于一般的数组,不包括数组元素含有对象的等一些情况。代码如下 //传入两个数组作为参数,寻找两个数组中的相同元素。 function  FilterData(a,b)         {   //循环判断数组a里的元素在b里面有没有,有的话就放入新建立的数组中             var result = ne
高效筛选两个List中的不同的元素
问题记录: 开发过程中,需要把两个List中不同的元素筛选出来,这两个List的数据量都很大,如果按照一般的方法,分别去遍历两个List,然后分别对每一个元素做比较,时间消耗将会达到m*n,处理效率显然不尽人意。 解决思路: 使用一个Map来对2个List中的元素进行计数: 即把List的元素作为Map的Key,Entry的Value为Integer类型,用于记录元素在两个集合中出
两个list集合对象,根据某一A集合中对象id判断是否在另一个B集合对象的id中是否有重复,取A集合中有,B集合中没有的对象
one: for (int i = 0; i &lt; A.size(); i++) { for (int j = 0; j &lt; B.size(); j++) { if (A.get(i).getId().equals(B.get(j).getId())) { continue one; } } // A集合...
C#利用反射实现两个类的对象之间相同属性的值的复制
   在使用c#进行程序编写时,会遇到一个问题,两个属性字段差不多相同的类要进行一个互相的转换,如这样的两个类class A { int Id; int age; string phone; string Name; string address; } class B { int Id; int age; string phone; string Name; string address; st...
使用vuejs获取两个数组id,如果某一个数组id成功匹配另一个数组内id,那么就勾选
这篇文章是使用vuejs获取数组,其中一个数组里面包含全部的数值,另一个数组只有一部分数值,要做的就是第二个数组去匹配第一个数组,匹配相同的情况下,给这个相同的数值打上钩,如下图 项目地址:https://github.com/fengliting/vue-array,后续代码解说就不会全部都打上 html是遍历全部的数组 {{item.value
如何将List集合中相同属性的对象合并
情景描述 在一个list中存放有许多个Person对象,对象属性分别为key与value,现需将对象中key相同的多个value值合并为一个。 //实体类 Class Person{ private Integer key; private Integer value; //书写get、set方法 public Integer getKey(){ ...
angular-ng-repeat不允许collection中存在两个相同Id的对象
报错如下angular.js:13424 Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {{x}} 在循环里加上track by $index  数组中是不允许存
根据数组对象某一元素的id,找到此元素在数组所在的位置(findIndex)
var listData = [ {id:"1234",name:"bob"}, {id:"2451",name:"mary"}, {id:"6666",name:"tom"}, {id:"5675",name:"jerry"}, {id:"8421",name:"ken"}, ] let index = listData.findIndex( item...
用java比较两个集合对象中不一样的元素。
代码和说明如下: package test; import java.util.ArrayList; import java.util.List; /**  * @author : suyuyuan * @date :2016年5月17日 上午9:41:05  * @version 1.0  */ public class Comparison { publ
两个数组对象筛选出不同
concat_arr(arr1, arr2) { let result = []; for (var i = 0; i &amp;lt; arr1.length; i++) { var obj = arr1[i]; var num = obj.rowName; var flag = false; for (va...