在 Java 中,Set 是一种不包含重复元素的集合(最多包含一个 null,取决于实现),核心特点是去重 + 无序/有序由实现决定。是否适合某个场景,主要看是否允许重复、是否需要快速查找、是否关注顺序。
下面按常见实现 + 典型场景说明:
✅ 适合:
❌ 不适合:
List 更合适)List / Bag 更合适)特点
HashMap适合场景
Set<String> tags = new HashSet<>();
tags.add("java");
tags.add("java"); // 自动去重
✅ 示例:
特点
HashSetHashSet适合场景
Set<String> history = new LinkedHashSet<>();
✅ 示例:
特点
适合场景
Set<Integer> scores = new TreeSet<>();
✅ 示例:
first() / last() / subSet()特点
enum适合场景
Set<Day> weekend = EnumSet.of(Day.SATURDAY, Day.SUNDAY);
特点
ConcurrentHashMap适合场景
Set<String> activeUsers = ConcurrentHashMap.newKeySet();
| 需求 | 选谁 |
|---|---|
| 去重 | ✅ Set |
| 有序可重复 | List |
| 插入顺序 | LinkedHashSet |
| 排序 | TreeSet |
| 快速查找 | HashSet |
| 多线程 | Concurrent Set |
HashSetLinkedHashSetTreeSetEnumSetConcurrentHashMap.newKeySet()如果你有具体业务场景(比如缓存、权限、搜索、并发),我可以直接帮你选最合适的 Set 实现。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。