这篇,学习一个HashSet类的子类,叫LinkedHashSet,看名称就大概明白是什么作用。LinkedHashSet是底层用链表实现的一种HashSet集合。前面我们知道,链表存储是List的一种实现方式,最明显的特点就是能保证元素的存入和取出顺序是一致的。这个特点,刚好弥补了Set集合无序的缺点。
1.API阅读关于LinkedHashSet
具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代。例如,插入元素顺序是a-b-c-d,迭代输出属性也是a-b-c-d。
LinkedHashSet的构造方法有4个,然后没有一个自己的成员方法,想方法都是使用父类或者间接父类的方法。例如添加元素add()方法就是Set集合的方法。
2.LinkedHashSet代码简单演示
下面写一个LinkedHashSet,写一个添加元素,然后打印遍历元素的代码。
package hashset;
import java.util.LinkedHashSet;
public class Demo1_LinkedHashSet {
public static void main(String[] args) {
LinkedHashSet<String> lhs = new LinkedHashSet<>();
//1.添加元素
lhs.add("a");
lhs.add("a");
lhs.add("a");
lhs.add("b");
lhs.add("b");
lhs.add("c");
lhs.add("c");
lhs.add("d");
//2.直接打印集合
System.out.println(lhs);
//3 for each实现迭代
for (String string : lhs) {
System.out.println(string);
}
}
}
输出:
[a, b, c, d]
a
b
c
d
3.LinkesdHashSet特点总结
1)是HashSet的一个子类,所以也是能保证元素唯一的,和HashSet原理一样
2)底层是链表实现的,是Set集合中唯一一个能保证怎么存就怎么取的集合对象