在上一篇文章中,我们介绍了HashSet.今天我们就来介绍一下LinkedHashSet.
其实HashSet和LinkedHashSet的关系,就跟HashMap和LinkedHashMap的关系一样.
LinkedHashSet是通过实例化一个LinkedHashMap来实现按序访问,只不过LinkedHashSet不允许我们指定按照哪种顺序进行排序,而只是默认按照元素插入的顺序排序.
关于LinkedHashMap的实现原理,请参考我的文章:Java集合框架源码研读-LinkedHashMap.
我们看LinkedHashMap的源码,从中根本就看不到跟存储元素插入顺序相关的任何数据结构.
其实,其实现的重点在于其构造函数上,我们看一下其构造函数:
由于LinkedHashSet的父类是HashSet,所以我们查看一下HashSet中相关的构造函数:
看到了吧?就是初始化的一个LinkedHashMap.