首页
学习
活动
专区
圈层
工具
发布

java的Set(一)

Java 中的 Set 是一种集合,它继承自 Collection 接口,它用于存储不重复的元素。Java 中提供了多个 Set 实现类,包括 HashSetLinkedHashSetTreeSet 等。下面是一个 HashSet 的示例:

代码语言:javascript
复制
import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        // 创建一个 HashSet 对象
        Set<String> set = new HashSet<String>();

        // 添加元素
        set.add("Java");
        set.add("Python");
        set.add("C++");
        set.add("JavaScript");
        set.add("Java");

        // 输出元素个数
        System.out.println("元素个数:" + set.size());

        // 遍历元素
        for (String str : set) {
            System.out.println(str);
        }

        // 判断是否包含元素
        System.out.println("是否包含 Python:" + set.contains("Python"));

        // 删除元素
        set.remove("C++");

        // 清空集合
        set.clear();
    }
}

在上面的代码中,首先创建了一个 HashSet 对象,然后使用 add() 方法添加元素,由于 Set 是不重复的,所以重复的元素只会保留一个。使用 size() 方法可以获取元素的个数,使用 contains() 方法可以判断集合中是否包含指定的元素,使用 remove() 方法可以删除元素,使用 clear() 方法可以清空集合。最后使用 for-each 循环遍历集合中的元素。

输出结果如下:

代码语言:javascript
复制
元素个数:4
Java
Python
C++
JavaScript
是否包含 Python:true

需要注意的是,Set 接口中的元素是无序的,即元素的添加和删除顺序与元素在集合中的位置无关。如果需要有序的集合,可以使用 TreeSetLinkedHashSet

Set 接口提供了许多常用的方法,如 add()contains()remove()clear()size()isEmpty()iterator() 等,具体可以参考 Java 官方文档。

除了 Collection 接口提供的方法外,Set 接口还提供了一些特有的方法,下面简单介绍一下:

  1. add(E e):将指定的元素添加到集合中。如果元素已经存在,则不会重复添加,返回 false
  2. addAll(Collection<? extends E> c):将指定集合中的所有元素添加到当前集合中。
  3. remove(Object o):从集合中删除指定元素。
  4. removeIf(Predicate<? super E> filter):根据指定的条件删除集合中的元素。
  5. retainAll(Collection<?> c):仅保留当前集合与指定集合的交集,即删除不属于指定集合的元素。
  6. contains(Object o):判断集合是否包含指定元素。
  7. containsAll(Collection<?> c):判断当前集合是否包含指定集合中的所有元素。
  8. isEmpty():判断集合是否为空。
  9. size():获取集合中元素的个数。
  10. clear():清空集合中的所有元素。

下面是一个 TreeSet 的示例,TreeSet 是基于红黑树实现的有序集合,它的元素按照自然顺序排序或者指定的排序方式进行排序:

代码语言:javascript
复制
import java.util.TreeSet;

public class TreeSetExample {
    public static void main(String[] args) {
        // 创建一个 TreeSet 对象
        TreeSet<Integer> set = new TreeSet<Integer>();

        // 添加元素
        set.add(5);
        set.add(2);
        set.add(8);
        set.add(1);

        // 输出元素个数
        System.out.println("元素个数:" + set.size());

        // 遍历元素
        for (Integer num : set) {
            System.out.println(num);
        }

        // 判断是否包含元素
        System.out.println("是否包含 5:" + set.contains(5));

        // 删除元素
        set.remove(2);

        // 清空集合
        set.clear();
    }
}

在上面的代码中,首先创建了一个 TreeSet 对象,然后使用 add() 方法添加元素,由于 TreeSet 是有序的,所以输出的结果是按照升序排列的。使用 contains() 方法可以判断集合中是否包含指定的元素,使用 remove() 方法可以删除元素,使用 clear() 方法可以清空集合。最后使用 for-each 循环遍历集合中的元素。

输出结果如下:

代码语言:javascript
复制
元素个数:4
1
2
5
8
是否包含 5:true

需要注意的是,如果要将自定义对象添加到集合中,需要重写对象的 hashCode()equals() 方法,以保证集合能够正确的去重和比较对象。另外,Set 集合中的元素是无序的,如果需要按照某种顺序进行排序,可以使用 TreeSet

下一篇
举报
领券