LinkedHashSet源码解析

转载:https://blog.csdn.net/u011518120/article/details/53356076

LinkedHashSet

基本特性

这里与HashSet不同使用了一个双端队列实现HashSet。从而实现了有序的排列。LinkedHashSet维护的是插入顺序,而且不受重复插入的影响,也就是仅仅以第一次插入操作为准。

客户端的散列实没有特殊指定,通常使用HashSet的散列顺序,而使用TreeSet则会有稍高的代价。这样当如果复制元素时依然会保持原先的顺序,通常符合使用者习惯。这句话其实我不是很理解。

LinkedHashSet是HashSet的子类,允许空元素,插入包含删除操作有常数时间复杂度,但是时间会稍多于HashSet因为需要维护双端队列。

当然LinkedHashSet的性能会收到初始大小和装填因子的影响,但是和HashSet有些不同,HashSet元素迭代性能消耗并不受容量的影响,因此初始大小的惩罚没有HashSet这么大。

实现

实现上实际上没有任何特殊的地方。只是重写了构造器。还利用了HashSet的构造器。

你可能感兴趣的:(Java基础)