一、containsAll函数的基本用法
/** * 检查一个集合是否包含另一个集合中的所有元素 * * @param set1 集合1 * @param set2 集合2 * @return true-包含所有元素,false-不包含所有元素 */ public static boolean containsAll(Set set1, Set set2) { return set1.containsAll(set2); }
containsAll是Set接口中的一个方法,用于检查一个集合是否包含另一个集合中的所有元素。这个方法的返回值为布尔类型,如果包含集合中的所有元素则返回true,否则返回false。
二、使用containsAll函数检查一维数组
Setset1 = new HashSet<>(Arrays.asList("A", "B", "C")); String[] array2 = new String[]{"B", "D", "A"}; Set set2 = new HashSet<>(Arrays.asList(array2)); if (containsAll(set1, set2)) { System.out.println("包含所有元素"); } else { System.out.println("不包含所有元素"); }
containsAll方法不仅可以对集合进行检查,还可以使用它来检查一维数组中是否包含另一个一维数组中的所有元素。在上面的示例代码中,我们先将一维数组转换成集合,然后调用containsAll方法进行判断。
三、使用containsAll函数检查二维数组
Setset1 = new HashSet<>(Arrays.asList("A", "B", "C")); String[][] array2 = new String[][]{{"B", "D"}, {"A"}}; Set set2 = new HashSet<>(); for (String[] arr : array2) { set2.addAll(Arrays.asList(arr)); } if (containsAll(set1, set2)) { System.out.println("包含所有元素"); } else { System.out.println("不包含所有元素"); }
containsAll方法还能够检查二维数组中是否包含另一个二维数组中的所有元素。在上面的示例代码中,我们使用一个for循环将二维数组中的所有元素加入到一个新的集合中,然后调用containsAll方法进行判断。
四、使用containsAll函数检查对象集合
public class Person { private String name; public Person(String name) { this.name = name; } public String getName() { return name; } @Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof Person)) { return false; } return name.equals(((Person) obj).getName()); } @Override public int hashCode() { return Objects.hash(name); } } Setset1 = new HashSet<>(Arrays.asList(new Person("Tom"), new Person("Jerry"))); Set set2 = new HashSet<>(Arrays.asList(new Person("Tom"), new Person("Lucy"), new Person("Jerry"))); if (containsAll(set1, set2)) { System.out.println("包含所有元素"); } else { System.out.println("不包含所有元素"); }
containsAll方法也可以用于检查对象集合中是否包含另一个对象集合中的所有元素。在上面的示例代码中,我们自定义了一个Person类,使用它来存储每个对象的姓名。由于containsAll方法使用equals方法来进行比较,因此我们必须重写equals和hashCode方法。
五、小结
使用containsAll函数可以方便地判断一个集合是否包含另一个集合中的所有元素,无论是一维数组、二维数组还是对象集合。在使用此函数时,需要注意传入参数的类型,必须是Set或其子类,例如HashSet、TreeSet等。