首相比较两个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