private static void listCompare() {
List<String> list1 = new ArrayList<>();
list1.add("hello");
list1.add("world");
list1.add("。");
List<String> list2 = new ArrayList<>();
list2.add("hello");
list2.add("world");
list2.add("。");
// true
System.out.println(list1.equals(list2));
}
list是有序的,所以元素顺序不同时返回false
private static void listCompare() {
List<String> list1 = new ArrayList<>();
list1.add("hello");
list1.add("world");
list1.add("。");
List<String> list2 = new ArrayList<>();
list2.add("hello");
list2.add("。");
list2.add("world");
// false
System.out.println(list1.equals(list2));
}
set是无序的,只要元素一样就返回true
private static void setCompare() {
Set<String> set1 = new HashSet<>();
set1.add("hello");
set1.add("world");
set1.add("。");
Set<String> set2 = new HashSet<>();
set2.add("hello");
set2.add("。");
set2.add("world");
System.out.println(set1.equals(set2));
}
几遍是linkedHashSetCompare,只要元素一样,返回的也是true
private static void linkedHashSetCompare() {
LinkedHashSet<String> set1 = new LinkedHashSet<>();
set1.add("hello");
set1.add("world");
set1.add("。");
Set<String> set2 = new LinkedHashSet<>();
set2.add("hello");
set2.add("。");
set2.add("world");
// true
System.out.println(set1.equals(set2));
}
ArrayList和LinkedList调用的是java.util.AbstractList#equals
HashSet与LinkedHashSet调用的是java.util.AbstractSet#equals
其他实现类就不一定都调用的是AbstractList或者AbstractSet中的了