Java 基础教程

Java Set(集合)

Java 中的 Set 接口是 Java 集合框架中的一种数据结构,它继承自 Collection 接口。Set 接口定义了一组不重复的元素,不保证元素的顺序,它是 Java 集合框架中的一种接口,位于 java.util 包中。

Set 接口提供了高效的元素存储和查找功能,适用于需要保持元素唯一性的场景。它可以用于去重、判断元素是否存在、集合运算等操作。

Set 接口特点

Set 接口的特点包括:

(1)不允许重复元素:Set 中的元素是唯一的,不能包含重复的元素。

(2)无序性:Set 中的元素没有固定的顺序,不保证元素的存储顺序和插入顺序一致。

(3)独立性:Set 中的元素是独立的,每个元素都是一个独立的对象。

(4)允许存放null:Set 中的元素允许为 null。

Set 常用方法

t接口定义了一系列方法用于对集合进行操作,包括但不限于以下常用方法:

  • 添加元素:add(E element)。

  • 判断元素是否存在:contains(Object element)。

  • 删除元素:remove(Object element)。

  • 获取集合大小:size()。

  • 遍历元素:forEach(Consumer<? super E> action)、iterator() 等。

Set 常用实现类

的 Set 实现类有:

  • HashSet:使用哈希表实现,对元素进行散列存储,支持快速查找,不保证元素的顺序。

  • TreeSet:使用红黑树实现,对元素进行排序存储,元素按照自然顺序或指定的比较器进行排序。

  • LinkedHashSet:使用哈希表和链表实现,保持元素的插入顺序,同时支持快速查找。

Set 示例

下面是一个完整的示例,展示了如何使用 Java 的 Set 接口及其实现类 HashSet 来存储和操作元素,代码如下:

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

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

       // 添加元素
       set.add("Apple");
       set.add("Banana");
       set.add("Orange");
       set.add("Apple"); // 添加重复元素,不会被存储

       // 获取元素数量
       System.out.println("元素数量:" + set.size());

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

       // 遍历元素
       System.out.println("遍历集合:");
       for (String fruit : set) {
           System.out.println(fruit);
       }

       // 删除元素
       set.remove("Banana");
       System.out.println("删除后的集合:" + set);
   }
}

运行示例,输出结果:

元素数量:3
是否包含Apple:true
是否包含Grape:false
遍历集合:
Apple
Orange
Banana
删除后的集合:[Apple, Orange]

在上面的示例中,我们首先创建了一个 HashSet 对象,并使用 add() 方法向集合中添加元素。由于 Set 不允许重复元素,添加重复元素时,只有第一个元素被存储。

然后,使用 size() 方法获取集合中元素的数量,并使用 contains() 方法判断元素是否存在于集合中。

接下来,使用 for-each 循环遍历集合中的元素,并使用 remove() 方法删除指定元素。

Set 的更多方法及详细用法请参考 Java API

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号