Java基础——集合进阶8
一、LinkedHashSet
添加第一个元素,在添加的时候会调用哈希公式计算出应该存入的位置,如果该位置是null,表示该位置没有元素,则直接添加进去。与此同时,在底层还多了一层链表,而且是双向链表,链表的头结点就是我们刚刚添入的元素。
添加第二个元素,通过哈希值计算出应该存入的位置,是3索引,这个地方同样的没有元素直接添加,添加成功之后,第一个元素的内部会记录第二个元素的地址值,第二个元素也会记录第一个元素的地址值,这样形成一条双向的链表。
添加第三个元素,------------------计算出的是3,就会通过equals()方法进行比较,两个对象的内部的属性值是否一样,假设不一样,新的元素在JDK8之后,就会挂在旧元素的下方,形成链表。与此同时,还会发生互相记录彼此地址值的行为。
这样遍历的时候,就会遍历这个双向链表就能顺序的取出元素。

package com.lkbhua.HashSetDemo;import java.util.LinkedHashSet;public class LinkedHashSetDemo {public static void main(String[] args) {/* LinkedHashSet实现类的应用*/// 1、创建4个学生对象Student s1 = new Student("lkbhua", 18);Student s2 = new Student("ZengQ", 18);Student s3 = new Student("TwoBaby", 18);Student s4 = new Student("JamesHarden", 36);// 2、创建LinkedHashSet集合对象LinkedHashSet<Student> lhs = new LinkedHashSet<>();lhs.add(s1);lhs.add(s2);lhs.add(s3);lhs.add(s4);// 3、遍历集合for(Student s : lhs){System.out.println(s.getName() + ":" + s.getAge());}System.out.println("--------------------------------");}
}

声明:
分析借鉴于通义AI
以上均来源于B站@ITheima的教学内容!!!
本人跟着视频内容学习,整理知识引用
