java中Set的介绍与实现:HashSet、LinkedHashSet、TreeSet

在Java中,SetCollection 接口的一个子接口,它是一个不包含重复元素的集合,且通常不保证维护元素的有序或迭代顺序。Set 接口主要用于确保集合中每个元素的唯一性。

Set接口的主要方法:

  • boolean add(E e):将指定的元素添加到此集合中(如果它尚未在集合中)。
  • boolean remove(Object o):从集合中移除指定元素。
  • int size():返回集合中的元素数量。
  • boolean contains(Object o):检查集合是否包含指定元素。
  • Iterator<E> iterator():返回此集合的迭代器。

Set接口的主要实现类:

  1. HashSet
  2. LinkedHashSet
  3. TreeSetjava中TreeSet的介绍与实现

1. HashSet

HashSet 是基于 HashMap 实现的,它不保证元素的顺序,特别是它不保证该顺序恒久不变。

代码示例:

import java.util.HashSet;
import java.util.Set;

public class HashSetExample {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(2);
        set.add(3);
        set.add(1); // 重复元素,不会被添加

        System.out.println("HashSet: " + set); // 输出可能是:[1, 2, 3]

        // 添加元素
        set.add(4);
        System.out.println("After adding 4: " + set); // 输出可能是:[1, 2, 3, 4]

        // 移除元素
        set.remove(2);
        System.out.println("After removing 2: " + set); // 输出可能是:[1, 3, 4]

        // 检查是否包含元素
        boolean contains = set.contains(3);
        System.out.println("Contains 3: " + contains); // 输出:true
    }
}

2. LinkedHashSet

LinkedHashSetHashSet 的一个子类,它维护元素的插入顺序,或者在构造时所指定的顺序。

代码示例:

import java.util.LinkedHashSet;
import java.util.Set;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        Set<Integer> set = new LinkedHashSet<>();
        set.add(1);
        set.add(2);
        set.add(3);
        set.add(1); // 重复元素,不会被添加

        System.out.println("LinkedHashSet: " + set); // 输出:[1, 2, 3]

        // 添加元素
        set.add(4);
        System.out.println("After adding 4: " + set); // 输出:[1, 2, 3, 4]

        // 移除元素
        set.remove(2);
        System.out.println("After removing 2: " + set); // 输出:[1, 3, 4]
    }
}

3. TreeSet

TreeSet 是基于 TreeMap 实现的,它可以确保元素处于排序状态,通常用于需要对元素进行排序的场合。

代码示例:

import java.util.TreeSet;
import java.util.Set;

public class TreeSetExample {
    public static void main(String[] args) {
        Set<Integer> set = new TreeSet<>();
        set.add(1);
        set.add(3);
        set.add(2);
        set.add(1); // 重复元素,不会被添加

        System.out.println("TreeSet: " + set); // 输出:[1, 2, 3]

        // 添加元素
        set.add(4);
        System.out.println("After adding 4: " + set); // 输出:[1, 2, 3, 4]

        // 移除元素
        set.remove(2);
        System.out.println("After removing 2: " + set); // 输出:[1, 3, 4]
    }
}

自定义排序请看:java中TreeSet的介绍与实现

总结

  • HashSet 提供快速查找,不保证元素顺序。
  • LinkedHashSet 提供快速查找,且维护元素插入顺序。
  • TreeSet 自动排序元素,适合需要有序数据的场合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值