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">

参考技术A import java.util.Arrays;
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()方法


参考技术D if(list1.containsAll(list2) && list2.containsAll(list1))System.out.println("the same");

如何判断两个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;

还可以简写成这样

public boolean equalList(List list1, List list2)

return (list1.size() == list2.size()) && list1.containsAll(list2) && list2.containsAll(list1);

参考技术C

最直接的办法就是遍历两个List中的每一个元素,遇到不相等的就break,返回false。下面的代码表示的就是这样一个意思。

以上是关于java 判断两个list中的对象是不是完全一致的主要内容,如果未能解决你的问题,请参考以下文章

比较两个list里是不是有相同的元素

java 泛型 对象 如何判断

java怎么比较两个list是不是相同?

java 怎么比较两个list是不是相同

java怎么比较两个list是不是相同?

js判断两个对象的值是不是相等