Java中的HashSet removeAll()方法及示例

Java中的HashSet removeAll()方法及示例

介绍

HashSet是Java中的一个集合类,可以存储不重复的元素。它实现了Set接口,基于哈希表来实现。

HashSet有一个removeAll()方法,用来从集合中删除另一个集合中的元素。当然,这些元素应该在原集合中存在才能被删除。

语法

public boolean removeAll(Collection<?> c)

参数说明:
c: 包含要删除元素的集合。

返回值:
– 如果原集合被修改,那么返回true,否则返回false

示例

假设我们有两个HashSet集合:set1和set2:

Set<Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(2);
set1.add(3);

Set<Integer> set2 = new HashSet<>();
set2.add(2);
set2.add(3);
set2.add(4);

接下来,我们使用removeAll()方法从set1中删除set2中的所有元素:

boolean removed = set1.removeAll(set2);

System.out.println(removed);  // 输出 true

System.out.println(set1);    // 输出 [1]

我们可以看到,由于set1中存在set2中的元素2和3,因此removeAll()方法会删除它们,最终set1只包含元素1。

实际应用

下面是一个更实际的示例,假设我们有一个List列表,其中包含两个Student对象。我们想要删除这个List中具有相同名字的Student对象。

Student类的定义如下:

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    // 省略getter和setter方法
}

首先,我们创建这个List:

List<Student> list = new ArrayList<>();
list.add(new Student("Tom", 20));
list.add(new Student("Jerry", 22));
list.add(new Student("Tom", 21));

然后,我们使用HashSet来删除这个List中所有具有相同名字的Student对象:

Set<String> names = new HashSet<>();
List<Student> deleteList = new ArrayList<>();

for (Student student : list) {
    if (names.contains(student.getName())) {
        deleteList.add(student);
    } else {
        names.add(student.getName());
    }
}

list.removeAll(deleteList);

在这个代码片段中,我们使用了一个HashSet来存储已经遍历过的Student对象的名字。如果当前遍历到的Student对象的名字已经存在于HashSet中,那么说明它是要被删除的对象,我们将它加入到一个deleteList中。否则,我们将当前Student对象的名字加入到HashSet中表示我们已经遍历过它。

最后,我们使用List的removeAll()方法从列表中删除所有在deleteList中的Student对象。

结论

HashSet的removeAll()方法可以用来从集合中删除另一个集合中的元素。在实际应用中,它可以用来从列表中删除所有具有相同属性的对象。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程