java 判断两个list中的对象是不是完全一致
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 判断两个list中的对象是不是完全一致相关的知识,希望对你有一定的参考价值。
List<Object> list1;
List<Object> list2;
需要比较list1是否完全包含list2;
所谓的包含,就是list1中的对象与list2完全一致(对象的属性也必须一致);
尽量不用双重for循环...在线等,求大神指教,谢谢!
使用java判断两个list中的对象是否完全一致的代码如下:
public class Test public static void main(String[] args)
List<Integer> a = Arrays.asList(1, 2, 3, 4)
List<Integer> b = Arrays.asList(4, 3, 2, 1)System.out.println(compare(a, b))
public static <T extends Comparable<T>> boolean compare(List<T> a, List<T> b) if (a.size() != b.size())
return falseCollections.sort(a)Collections.sort(b)for (int i = 0; i < a.size(); i++) if (!a.get(i).equals(b.get(i)))return false;return true;
使用java判断是否有新增数据的代码如下:
public List<MonitoringFlight> isSaveOrUpdate
(List<MonitoringFlight> oldList, List<MonitoringFlight> newList)
<br datafiltered="filtered">List<MonitoringFlight>
monitoringFlights = new ArrayList<MonitoringFlight>()
<br data-filtered="filtered">for (int i = 0; i < oldList.size(); i++)
<br data-filtered="filtered"> for (int j = 0; j < newList.size(); j++)
<br data-filtered="filtered">//判断是否有新增<br datafiltered="filtered">
if(oldList.get(i).getId().equals(newList.get(j).getId()))
<br data-filtered="filtered">//判断是否有更新<br data-filtered="filtered">if()
<br data-filtered="filtered"><br data-filtered="filtered">else
<br data-filtered="filtered"><br data-filtered="filtered">
<br data-filtered="filtered"><br data-filtered="filtered">
else<br data-filtered="filtered">//有新增<br data-filtered="filtered">
<br data-filtered="filtered"><br data-filtered="filtered">
<br data-filtered="filtered"><br data-filtered="filtered">
<br data-filtered="filtered"><br data-filtered="filtered"><br datafiltered="filtered">
return monitoringFlights;<br data-filtered="filtered">
import java.util.Collections;
import java.util.List;
public class Test
public static void main(String[] args)
List<Integer> a = Arrays.asList(1, 2, 3, 4);
List<Integer> b = Arrays.asList(4, 3, 2, 1);
System.out.println(compare(a, b));
public static <T extends Comparable<T>> boolean compare(List<T> a, List<T> b)
if (a.size() != b.size())
return false;
Collections.sort(a);
Collections.sort(b);
for (int i = 0; i < a.size(); i++)
if (!a.get(i).equals(b.get(i)))
return false;
return true;
参考技术B 你是想问,list里的数据完全一直吗?必须拿出来比较才可以知道,或者你想要知道这两个list是否使用同一个引用,比较引用的话就不用循环比较了。 参考技术C
楼主说的LIST集合是对象类型,需要比较的还有属性
重写实体类的equals方法
集合A,B分别调用ContainsAll()方法
如何判断两个list集合是不是相等
参考技术A 在终端上测试就可以了A = [1,2,3,4]
B = [1,2,3,4]
A == B
以上返回结果为True,如果不相等返回Flase。 参考技术B
首先这里需要确定一下集合相等的定义,我们应该是认为两个集合的元素完全一致则相等。那么判断可以这样做:
第一步:判断两个list集合的元素个数是否相等。如果不相等则两个list集合也不相等,判断结束,如果相等则进入第二步判断
第二步:判断list1的元素是否全部在list2中。遍历list1,取出list1中的元素,依次去list2中比较是否list2也存在这个元素。如果有任何一个list1中的元素在list2中不存在,则两个list集合不相等,如果全部存在则两个list集合相等。
第三步:判断list2的元素是否全部在list1中。判断方式同上。如果能确保list1和list2内的元素都不重复那么第三步可以省略。
以下是上诉过程的Java代码例子:
public boolean equalList(List list1, List list2)
if (list1.size() != list2.size())
return false;
for (Object object : list1)
if (!list2.contains(object))
return false;
for (Object object : list2)if (!list1.contains(object))
return false;
return true;
以上过程适用于所有编程语言。另外不同编程语言还提供了一些其他方法,所以对于不同编程语言还可以有其他写法。
比如Java中为list集合提供了containsAll方法。所以对于Java语言还可以这么写:
public boolean equalList(List list1, List list2)
if (list1.size() != list2.size())
return false;
if (list2.containsAll(list1) && list1.containsAll(list2))
return true;
return false;
还可以简写成这样
参考技术Cpublic boolean equalList(List list1, List list2)
return (list1.size() == list2.size()) && list1.containsAll(list2) && list2.containsAll(list1);
最直接的办法就是遍历两个List中的每一个元素,遇到不相等的就break,返回false。下面的代码表示的就是这样一个意思。
以上是关于java 判断两个list中的对象是不是完全一致的主要内容,如果未能解决你的问题,请参考以下文章