Java中类HashSet<E>和类LinkedHashSet<E>的区别

来源:互联网 发布:口碑和淘宝外卖一样么 编辑:程序博客网 时间:2024/06/05 07:23

Java中类HashSet<E>和类LinkedHashSet<E>的区别


类HashSet<E>
此类实现了Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。

类LinkedHashSet<E>
具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到set中的顺序(插入顺序)进行迭代。注意,插入顺序不受在set中重新插入的元素影响。(如果在s.contains(e)返回true后立即调用s.add(e),则元素e会被重新插入到set  s中。

如果模块通过输入得到一个set,复制这个set,然后返回由此副本决定了顺序的结果,这种情况下这项技术特别有用。(客户通常期望内容返回的顺序与它们出现的顺序相同。)

0 0
原创粉丝点击