java linkedhashset_跟我学Java编程—掌握LinkedHashSet的用法

前面介绍了Set接口的实现类HashSet,本节介绍Set接口的另一个实现类LinkedHashSet。相对HashSet来说,LinkedHashSet存储结构是一个双向链表,因此它存储的元素是有序的。

LinkedHashSet继承自HashSet,源码更少、更简单,唯一的区别是LinkedHashSet内部使用的是LinkHashMap。这样做的意义或者好处就是LinkedHashSet中的元素顺序是可以保证的,也就是说遍历序和插入序是一致的。

LinkedHashSet类支持四个构造函数。

第一种构造函数初始化一个空的LinkedHashSet:

LinkedHashSet( );

第二种构造函数使用Collection元素集初始化LinkedHashSet:

LinkedHashSet(Collection c)

第三种构造函数用给定的容量初始化LinkedHashSet:

LinkedHashSet(int capacity)

第四种构造函数通过传入的容量和填充比初始化LinkedHashSet:

LinkedHashSet(int capacity, float fillRatio)

下面先通过一个应用实例对LinkedHashSet的用法有个具体了解。

261c22b68c88711e863dd047e7131fb5.png

LinkedHashSet 底层采用双向链表实现,可以保证元素的插入顺序,又因为是HashSet的子类,所以插入的元素不能重复。

运行上面的程序,输出结果如下图所示:

187b940a0d472b44ad1e431a624c09dc.png图 14-5 LinkedHashSetTest输出结果

从上图可以看出,LinkedHashSet添加了多个内容为“a”的String对象,但只有一个String对象添加成功。另外,元素的输出顺序也和添加元素的顺序一致。

LinkedHashSet需要维护元素的插入顺序,因此性能略低于HashSet的性能,但在迭代访问Set里的全部元素时将有很好的性能,因为它以链表来维护内部顺序。

■ 知识点拨

LinkedHashSet 是 Set 的一个具体实现,其维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。

如果需要迭代的顺序为插入顺序或者访问顺序,那么 LinkedHashSet 是需要你首先考虑的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值