当前位置:首页 > 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如何输入

使用Scanner类进行输入 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读取数据。需要导入java.util.Scanner包。 基本语法: Scanner sca…

如何学习java

如何学习java

学习Java的步骤 理解基础知识 从Java的基本语法开始,包括变量、数据类型、运算符、控制流(if-else、循环)等。掌握这些基础概念是后续学习的基石。 学习面向对象编程(OOP) Java是一…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java如何配置环境变量

java如何配置环境变量

配置Java环境变量的方法 下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK安装包。运行安装程序并按照提示完成安装,记下JDK的安装路径(例如C:\Program File…

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…

如何搭建java环境

如何搭建java环境

下载JDK 访问Oracle官网或OpenJDK官网下载适合操作系统的JDK安装包。推荐选择长期支持版本(如JDK 17或JDK 21)。 安装JDK 运行下载的安装程序,按照向导完成安装。注意…