当前位置:首页 > Java

java set 如何使用

2026-03-22 05:24:04Java

Java Set 的基本概念

Set 是 Java 集合框架中的一个接口,继承自 Collection 接口。Set 的特点是不允许重复元素,且不保证元素的顺序(具体实现类可能有不同的行为,如 LinkedHashSet 会维护插入顺序)。

Set 的常用实现类

  1. HashSet
    基于哈希表实现,提供快速的插入、删除和查找操作,但不保证元素的顺序。

  2. LinkedHashSet
    继承自 HashSet,维护元素的插入顺序,适合需要顺序访问的场景。

  3. TreeSet
    基于红黑树实现,元素按自然顺序或自定义比较器排序,适合需要有序集合的场景。

Set 的基本操作

创建 Set 对象

Set<String> hashSet = new HashSet<>();
Set<String> linkedHashSet = new LinkedHashSet<>();
Set<String> treeSet = new TreeSet<>();

添加元素

hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Orange");

检查元素是否存在

boolean containsApple = hashSet.contains("Apple"); // true

删除元素

hashSet.remove("Banana");

遍历元素

for (String fruit : hashSet) {
    System.out.println(fruit);
}

获取 Set 大小

int size = hashSet.size();

Set 的高级操作

集合运算

  • 并集

    java set 如何使用

    Set<String> set1 = new HashSet<>(Arrays.asList("A", "B"));
    Set<String> set2 = new HashSet<>(Arrays.asList("B", "C"));
    set1.addAll(set2); // set1 变为 {A, B, C}
  • 交集

    set1.retainAll(set2); // set1 变为 {B}
  • 差集

    set1.removeAll(set2); // set1 变为 {A}

转换为数组

String[] array = hashSet.toArray(new String[0]);

注意事项

  1. 元素唯一性
    Set 不允许重复元素,添加重复元素时会被忽略。

    java set 如何使用

  2. null 值
    HashSetLinkedHashSet 允许一个 null 值,但 TreeSet 不允许(会抛出 NullPointerException)。

  3. 线程安全性
    默认的 Set 实现不是线程安全的。如果需要线程安全,可以使用 Collections.synchronizedSet 包装:

    Set<String> synchronizedSet = Collections.synchronizedSet(new HashSet<>());
  4. 性能比较

    • HashSet:插入、删除、查找均为 O(1)。
    • LinkedHashSet:插入、删除、查找接近 O(1),但维护顺序有额外开销。
    • TreeSet:插入、删除、查找为 O(log n),但支持有序操作。

示例代码

import java.util.*;

public class SetExample {
    public static void main(String[] args) {
        Set<String> fruits = new HashSet<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        fruits.add("Apple"); // 重复元素,不会被添加

        System.out.println("Set contains Banana: " + fruits.contains("Banana"));
        fruits.remove("Banana");

        System.out.println("Fruits in set:");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

输出:

Set contains Banana: true
Fruits in set:
Orange
Apple

分享给朋友:

相关文章

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

java如何解决高并发

java如何解决高并发

Java 高并发解决方案 使用线程池优化资源管理 线程池(如 ThreadPoolExecutor)能避免频繁创建和销毁线程的开销。通过核心线程数、最大线程数和任务队列的合理配置,可以平衡系统负载。例…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…

java如何导入jar包

java如何导入jar包

在Eclipse中导入JAR包 右键项目 -> 选择"Properties" -> 左侧导航选择"Java Build Path" -> 切换到"Libraries"标签 ->…

java面试官如何面试别人

java面试官如何面试别人

考察基础知识 从Java核心概念入手,包括面向对象特性(封装、继承、多态)、集合框架(ArrayList vs LinkedList、HashMap实现原理)、异常处理机制、多线程(线程池、锁机制)等…