【问题标题】:How to create Linkedhashset using Hashset?如何使用 Hashset 创建 Linkedhashset?
【发布时间】:2013-07-27 19:29:00
【问题描述】:

我在采访中被问到这个问题“如何使用 Hashset 创建 Linkedhashset?”有人知道答案吗?

【问题讨论】:

  • Java? “使用 Hashset”是什么意思?
  • 是的,对于 Java,基本上是一个行为类似于 LinkedHashSet 的 HashSet,插入顺序被保留。说,我只有 HashSet 并且想让它表现得像 LinkedHashSet。

标签: linkedhashset


【解决方案1】:

LinkedHashSet 类有一个 public LinkedHashSet(Collection<? extends E> c) 构造函数,所以你可以这样做

HashSet<Foo> hs = new HashSet<Foo>();
// add items...
LinkedHashSet<Foo> lhs = new LinkedHashSet<Foo>(hs);

获取与hs 内容相同的LinkedHashSet 实例。请注意,不能保证来自hs 的项目按照插入hs 的顺序插入lhs,因为hs 从未保存过该信息。

没有办法制作“行为类似于 LinkedHashSet 的 HashSet”,即运行时类 HashSet 的实例,其行为类似于 LinkedHashSet 实例。但是,你可以这样做

HashSet<Foo> hs = new LinkedHashSet<Foo>();

这将为您提供一个实例,外部世界将其视为普通的HashSet,但在内部使用LinkedHashSet 实现。不过,我不明白你为什么要这样做——你只会获得一堆开销,而且没有额外的功能,因为声明的类型是HashSet。您首先要使用 LinkedHashSet 的原因是为了保证可预测的迭代顺序,但您仍然无法假设 hs - 您可以随时分配 hs = new HashSet&lt;Foo&gt;()实例。

【讨论】:

  • 接受对您有帮助的答案被认为是一种礼貌。 :)
猜你喜欢
  • 2011-07-02
  • 2013-08-30
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
相关资源
最近更新 更多