1. 以数字的集合为例
public class CompareListTest {
public static void main(String[] args) {
List<Integer> l1 = new ArrayList<Integer>();
l1.add(1);
l1.add(1);
l1.add(2);
l1.add(3);
l1.add(5);
List<Integer> l2 = new ArrayList<Integer>();
l2.add(1);
l2.add(2);
l2.add(2);
l2.add(3);
l2.add(5);
boolean equals = equals(l1, l2);
System.out.println(equals);
}
/**
* 判断集合元素是否相同
* @param list_a 集合a
* @param list_b 集合b
* @param <Q> 泛型
* @return
*/
public static boolean equals(List<Integer> list_a, List<Integer> list_b) {
//非空判断还是要的
if (list_a == null || list_a.isEmpty()) {
return false;
}
if (list_b == null || list_b.isEmpty()) {
return false;
}
//size判断
if (list_a.size() != list_b.size()) {
System.out.println("size is not equal,return false!");
return false;
}
for (int a : list_a) {
for (int x = list_b.size() - 1; x >= 0; x--) {//这个是重点,要倒序遍历
int b = list_b.get(x);
System.out.println("list_a is" + a + " list_b is" + b);
if (a == b) {// remove相等的元素
System.out.println("有一个元素的值是相等的");
list_b.remove(x);// 移除按照索引的位置
break;
} else {
if (x == 0) {
System.out.println("没有一个元素是相等的");
return false;
}
}
}
}
return true;
}
}
2. 以String类型的集合为例
package org.javaboy.vhr.test;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TuofengpaixuTest {
public static void main(String[] args) {
List<String> l1 = new ArrayList<>();
l1.add("lisi");
l1.add("liushishi");
l1.add("zhangsan");
l1.add("lisi");
l1.add("wangwu");
Collections.sort(l1);
System.out.println(JSONObject.toJSONString(l1));
List<String> l2 = new ArrayList<>();
l2.add("liushishi");
l2.add("liushishi");
l2.add("zhangsan");
l2.add("lisi");
l2.add("wangwu");
Collections.sort(l2);
System.out.println(JSONObject.toJSONString(l2));
System.out.println(l1.equals(l2));// false
}
}