在List中有equal()方法,但是那只是对比相同的位置上的元素是否相同。
为了达到两个list乱序状态下依然将含有完全一样的元素视为相等。需要新写一个方法:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ListComp {
private static List list1 = new ArrayList();
private static List list2 = new ArrayList();
/**
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
list1.add("Liang");
list1.add("wiang");
list2.add("wiang");
list2.add("Liang");
list2.add("wiang");
// list1.removeAll(list2);
System.out.println("list1 hash");
System.out.println(list1.hashCode());
System.out.println("list2 hash");
System.out.println(list2.hashCode());
if (compare(list1, list2)) {
System.out.println("hello");
} else {
System.out.println("hello kity");
}
}
public static > boolean compare(List a, List 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;
}
}