【发布时间】:2020-09-28 22:14:50
【问题描述】:
我正在尝试了解 set.contains 方法的工作原理。我为数组、列表、集合和类类型制作了 4 个不同的集合。但它不适用于数组和类类型。
class MainClass {
public static void main(String[] args) {
Set<int[]> arraySet = new HashSet<>();
Set<List<Integer>> listSet = new HashSet<>();
Set<Set<Integer>> setSet = new HashSet<>();
Set<Numbers> numSet = new HashSet<>();
int[] array1 = {1,2,3};
int[] array2 = {1,2,3};
List<Integer> list1 = Arrays.asList(1,2,3);
List<Integer> list2 = Arrays.asList(1,2,3);
Set<Integer> set1 = new HashSet<>(Arrays.asList(1,2,3));
Set<Integer> set2 = new HashSet<>(Arrays.asList(1,2,3));
Numbers num1 = new Numbers(1,2,3);
Numbers num2 = new Numbers(1,2,3);
arraySet.add(array1);
listSet.add(list1);
setSet.add(set1);
numSet.add(num1);
// false
System.out.println(arraySet.contains(array2));
// true
System.out.println(listSet.contains(list2));
// true
System.out.println(setSet.contains(set2));
// false
System.out.println(numSet.contains(num2));
}
}
class Numbers{
int num1;
int num2;
int num3;
public Numbers(int num1, int num2, int num3){
this.num1 = num1;
this.num2 = num2;
this.num3 = num3;
}
}
set.contains 仅适用于 Collection 对象的原因是什么?
【问题讨论】:
-
尝试给 System.out.println(arraySet); System.out.println(listSet); System.out.println(setSet); System.out.println(numSet);在您的系统输出之前。您将了解其中的区别。
-
@HarmandeepSinghKalsi 和 set.contains 方法有关吗?
-
它和set.contains()方法没有直接关系,但是你可以这样推断,你的理解哪里错了。
标签: java arrays list collections set