Java基础——集合进阶6
一、set系列集合

1.1 什么是 Set?—— 核心定义与特性
Set 是 Java 集合框架中的一个接口,代表“不包含重复元素”的集合。
✅ Set 的三大核心特性:
无序性(部分实现有序)
- 大多数 Set 不保证元素的插入顺序(如
HashSet) - 但有些实现是有序的(如
LinkedHashSet按插入顺序,TreeSet按自然/自定义顺序)
- 大多数 Set 不保证元素的插入顺序(如
唯一性(不允许重复)
- 判断重复依据:
equals()+hashCode() - 如果两个对象
equals()返回true,则视为同一个元素
- 判断重复依据:
允许最多一个 null 元素
HashSet/LinkedHashSet:允许一个nullTreeSet:默认不允许null(会抛NullPointerException),除非提供自定义比较器
set也是一个接口,collection中的方法set系列也可以用。存取的顺序不一致指的是存的时候是ABC,取的顺序不一定是ABC或者CBA。



package com.lkbhua.setDemo;import java.util.HashSet;
import java.util.Set;public class demo1 {public static void main(String[] args) {/* 利用set系列的集合,添加字符串,并使用多种方式遍历① 迭代器② 增强for③ Lambda表达式*/// 1、创建一个set集合的对象// set是一个接口,不能创建对象,只能创建其实现类的对象Set<String> set = new HashSet<>();// 2、添加元素// 注意:// 之前我们list系列的add()方法添加的时候也是有返回值的,但是list系列运行元素重复,所以返回值总是true// 现在set系列的集合,是不允许添加重复的元素,如果添加重复的元素,那么返回值是falseboolean r1 = set.add("lkbhua");boolean r2 = set.add("lkbhua");System.out.println(r1); // trueSystem.out.println(r2); // falseset.add("hello");set.add("world");set.add("java");System.out.println(set); //[world, java, hello, lkbhua]// 说明存和取的顺序是不一样的// 1、利用迭代器的方式进行遍历/* Iterator<String> it = set.iterator();while(it.hasNext()){String s = it.next();System.out.println(s);}*/// 2、利用增强for进行遍历for(String s : set){System.out.println(s);}// 3、利用Lambda表达式进行遍历set.forEach(s -> System.out.println(s));}
}
1.2 Set与List对比
| 特性 | Set | List | |
|---|---|---|---|
| 是否允许重复 | ❌ 否 | ✅ 是 | |
| 是否有序 | 部分实现有序 | ✅ 是(按索引) | |
| 底层结构 | 哈希表 / 红黑树 / 链表等 | 数组 / 链表 | |
| 访问方式 | 迭代器遍历 | 索引 or 迭代器 | |
| 典型实现 | HashSet, TreeSet | ArrayList, LinkedList |
💡 Set = “去重容器”,常用于:用户 ID 去重、标签去重、权限集合等

🌟 最后一句话总结:
“Set 是 Java 集合中‘秩序与唯一’的守护者——它用不同的数据结构,在去重的基础上,为你提供无序、有序、排序、并发等多种选择!”
声明:
题目详细分析借鉴于通义AI
以上均来源于B站@ITheima的教学内容!!!
本人跟着视频内容学习,整理知识引用
