原理:LinkedHashSet的有序性是通过其底层数据结构——LinkedHashMap来实现的。LinkedHashMap是一个基于散列表的Map实现,它内部维护了一个双向链表来记录元素的插入顺序。当元素被添加到LinkedHashSet中时,实际上是被添加到了其底层LinkedHashMap的一个桶(bucket)中,并且该元素还会被添加到双向链表的末尾,从而保持了元素的插入顺序。
代码如下:
public static void main(String[] args) {
//创建三个学生对象
Student s1 = new Student("张三", 21);
Student s2 = new Student("李四", 21);
Student s3 = new Student("王五", 21);
//创建LinkedHashSet集合
LinkedHashSet<Student> l = new LinkedHashSet<>();
//添加对象
l.add(s1);
l.add(s2);
l.add(s3);
//打印集合
l.forEach(System.out::println);
}
打印结果如下:
结论:LinkedHashSet集合的有序性是其重要的特性之一,它使得LinkedHashSet在需要保持元素顺序的场景中非常有用。