LinkedHashSet是HashSet的子类,通过双向链表维护插入顺序,确保遍历时按添加顺序返回元素。它使用哈希表保证元素唯一性,同时兼顾有序性。创建实例后直接调用add()方法添加元素即可实现顺序保持,如示例中添加"Apple"、"Banana"等,输出为[Apple, Banana, Orange],重复元素被自动去重。适用于需去重且保留首次插入顺序的场景,性能优于ArrayList去重,但应注意不可变对象的hashCode一致性,避免修改已添加对象的关键字段导致集合行为异常。

在Java中,LinkedHashSet 会自动保持元素的插入顺序,这是它与 HashSet 的主要区别。如果你希望集合中的元素按照添加顺序被遍历,使用 LinkedHashSet 是最简单有效的方式。
什么是 LinkedHashSet?
LinkedHashSet 是 HashSet 的子类,内部通过维护一个双向链表来记录元素的插入顺序。虽然底层依然使用哈希表保证唯一性,但链表结构确保了遍历时的顺序与插入顺序一致。
如何使用 LinkedHashSet 保持插入顺序?
直接创建 LinkedHashSet 实例并添加元素即可,无需额外配置:
- 创建 LinkedHashSet 对象
- 调用 add() 方法添加元素
- 遍历时元素将按插入顺序返回
import java.util.LinkedHashSet;
public class Main {
public static void main(String[] args) {
LinkedHashSet set = new LinkedHashSet<>
();
set.add("Apple");
set.add("Banana");
set.add("Orange");
set.add("Apple"); // 重复元素不会被添加
System.out.println(set);
// 输出: [Apple, Banana, Orange]
}
}
注意事项和适用场景
LinkedHashSet 在保持插入顺序的同时,仍具备 Set 接口的核心特性:不允许重复元素。适合以下情况:
Android文档-开发者指南-第一部分:入门-中英文对照版 Android提供了丰富的应用程序框架,它允许您在Java语言环境中构建移动设备的创新应用程序和游戏。在左侧导航中列出的文档提供了有关如何使用Android的各种API来构建应用程序的详细信息。第一部分:Introduction(入门) 0、Introduction to Android(引进到Android) 1、Application Fundamentals(应用程序基础) 2、Device Compatibility(设备兼容性) 3、
立即学习“Java免费学习笔记(深入)”;
- 需要去重且保留首次出现的顺序
- 遍历顺序需反映添加顺序
- 性能要求高于 TreeSet 但优于 ArrayList 去重操作
需要注意的是,如果修改已添加对象的关键字段(影响 hashCode),可能会破坏集合的正常行为,应避免此类操作。
基本上就这些,不复杂但容易忽略。









