比较两个List里的值是否相等

本文介绍了一种比较两个List是否相等的方法,包括检查List的大小是否一致、排序两个List以便于比较以及逐元素对比两个List的内容。通过具体示例展示了如何实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首相比较两个list是否相等,这两个list的size一定要相等,这个是先决条件

然后将这个两个list先排序一下,以方便后期比较

这里就需要用到Collections类里的sort排序方法
    public static <T extends Comparable<? super T>> void sort(List<T> list) {
        Object[] a = list.toArray();
        Arrays.sort(a);
        ListIterator<T> i = list.listIterator();
        for (int j=0; j<a.length; j++) {
            i.next();
            i.set((T)a[j]);
        }
    }

下面写一个工具类

/**
     * @param firstList 第一个list参数
     * @param scList    第二个list参数
     * @return boolean  相等为true,否则为false
     */
    public static <T extends Comparable<T>> boolean twoListCompareUtil(List<T> firstList, List<T> scList) {
          //首先判断这两个list的大小是否相等
          if(firstList.size() != scList.size()){
              return false;
          }
          //如果两个list大小相等,其中可能为0,所以排除为0的这种情况
          if(firstList.size()>0 && scList.size()>0){
            //如果相等,对两个list分别排序以方便后期比较
              Collections.sort(firstList);
              Collections.sort(scList);
              //循环遍历两个几个取值比较是否相同,不同则返回false
              for(int i=0;i<firstList.size();i++){
                    //取值比较是否相同
                    if(!firstList.get(i).equals(scList.get(i))){
                         return false;
                    }
              }
              return true;
          }else{
              return false;
          }
          
    }

下面写一个测试类:

public static void main(String[] args) {
		  List<Integer> list1 = new ArrayList<>();
		  list1.add(1); 
		  list1.add(2);
		  list1.add(3);
		  list1.add(4);
		  List<Integer> list2 = new ArrayList<>();
		  list2.add(3); 
		  list2.add(4);
		  list2.add(2);
		  list2.add(1);
		  System.out.println("list1, list2比较结果如下:");
		  System.out.println(twoListCompareUtil(list1, list2));
		  List<Integer> list3 = new ArrayList<>();
		  list1.add(1); 
		  list1.add(2);
		  list1.add(3);
		  list1.add(5);
		  List<Integer> list4 = new ArrayList<>();
		  list2.add(3); 
		  list2.add(4);
		  list2.add(2);
		  list2.add(1);
		  System.out.println("list3, list4比较结果如下:");
		  System.out.println(twoListCompareUtil(list3, list4));
		  
	}

测试结果如下:

list1, list2比较结果如下:
true
list3, list4比较结果如下:
false



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值