java中比较两个json数组不同的json对象并返回不同的json对象 10C

jsonArray array1 = [{"award_number":1,"start_time":"2017-12-04 17:17:35","end_time":"2017-12-09 17:17:39"},{"award_number":2,"start_time":"2017-12-09 17:17:35","end_time":"2017-12-12 17:17:39"},{"award_number":2,"start_time":"2017-12-12 17:17:35","end_time":"2017-12-14 17:17:39"},{"award_number":3,"start_time":"2017-12-14 17:17:35","end_time":"2017-12-16 17:17:39"}]
jsonArray array2 = [{"award_number":1,"start_time":"2017-12-04 17:17:35","end_time":"2017-12-09 17:17:39"},{"award_number":2,"start_time":"2017-12-09 17:17:35","end_time":"2017-12-12 17:17:39"},{"award_number":2,"start_time":"2017-12-12 17:17:35","end_time":"2017-12-14 17:17:39"},{"award_number":3,"start_time":"2017-12-14 17:17:35","end_time":"2017-12-16 17:17:39"},{"award_number":4,"start_time":"2017-12-16 17:17:35","end_time":"2017-12-18 17:17:39"}]

12个回答

首先判断award_number 是否都存在那个如果a有,b没有,则是不同。都有的话,然后再比较 start_time 再比较end_time。没问题吧

u011830628
花绽飘香 回复m0_37746602: vatrenoludilo 他的回答也挺好的,结果一样,方法多的是
2 年多之前 回复
m0_37746602
m0_37746602 这样太麻烦,不知道有没有简单点的
2 年多之前 回复

遍历第一个数组,
List list1 = Arrays.asList(t1);
List list2 = new ArrayList();
for (T t : t2) {
if (!list1.contains(t)) {
list2.add(t);
}
}

    希望对你有所帮助
u011989794
嘒彼小星 回复qq_29288027: 因为我想楼主估计就是要这种比对方法,不想一个个的去对比,所以给他提供一个思路,这个方法用在这里对比确实是不行的。
2 年多之前 回复
qq_29288027
qq_29288027 你这个应该不行,因为他这个json的object是引用类型,contains比较的是地址不是比较值。这个比较应该要自己通过比较字符串自己写。
2 年多之前 回复

构造这个类啊,比如TargetClass,在这个Class中写好静态的比较方法equals()返回bool,把json数组的数据放入这个类中可以用一个List targetList来存放这些实例。
最后写一个两个list的比较方法返回int[]数组(对应位置用你写的这个equals()去比较这两个类的实例是否相同,不相同的话就把它加入返回的int[]数组里面),这样就得到两个list集合中对应位置不相同的object了。
PS:不知道你是不是这个需求,具体代码自己去实现。

别沉啊,不错,希望有人能解析

首先判断award_number 是否都存在那个如果a有,b没有,则是不同。都有的话,然后再比较 start_time 再比较end_time。构造这个类啊,比如TargetClass,在这个Class中写好静态的比较方法equals()返回bool,把json数组的数据放入这个类中可以用一个List targetList来存放这些实例。
最后写一个两个list的比较方法返回int[]数组(对应位置用你写的这个equals()去比较这两个类的实例是否相同,不相同的话就把它加入返回的int[]数组里面),这样就得到两个list集合中对应位置不相同的object了。
PS:不知道你是不是这个需求,具体代码自己去实现。

借用楼上的回复改了一下,感觉这样可能更好
List list1 = Arrays.asList(t1);
List list2 = new ArrayList();
Iterator it = list1.iterator();
while (it.hasNext) {
t = it.next;
if (!list1.contains(t)) {
list2.add(t);
it.remove(t);
}
}

for (T t: list1) {
    list2.add(t);
}

    return list2

首先判断award_number 是否都存在那个如果a有,b没有,则是不同。都有的话,然后再比较 start_time 再比较end_time。构造这个类啊,比如TargetClass,在这个Class中写好静态的比较方法equals()返回bool,把json数组的数据放入这个类中可以用一个List targetList来存放这些实例。
最后写一个两个list的比较方法返回int[]数组(对应位置用你写的这个equals()去比较这两个类的实例是否相同,不相同的话就把它加入返回的int[]数组里面),这样就得到两个list集合中对应位置不相同的object了。
PS:不知道你是不是这个需求,具体代码自己去实现。

如上所说:字段相同,属性值不同,最简单的方法就是定义一个类,在类中的equals 定义好,类相同的条件,然后使用equals 判断就可以直接判断出不同的对象了

字段相同,属性值不同,最简单的方法就是定义一个类,在类中的equals 定义好,类相同的条件,然后使用equals 判断就可以直接判断出不同的对象了

如果只是为了确认两个json数组是否相同,可以转为字符串,然后md5加密,如果两个加密的值相同则json数组相同,否则就不同了

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问