我在采访中被问到这个问题“如何使用 Hashset 创建 Linkedhashset?” 有人知道答案吗?
问问题
711 次
1 回答
2
LinkedHashSet类有一个public LinkedHashSet(Collection<? extends E> c)
构造函数,所以你可以这样做
HashSet<Foo> hs = new HashSet<Foo>();
// add items...
LinkedHashSet<Foo> lhs = new LinkedHashSet<Foo>(hs);
获取与 . 内容相同的 LinkedHashSet 实例hs
。请注意,不能保证 from 中的项目按照它们插入的顺序插入hs
,因为该信息从未保存过。lhs
hs
hs
没有办法制作“行为类似于 LinkedHashSet 的 HashSet”,即HashSet
行为类似于实例的运行时类的LinkedHashSet
实例。但是,你可以做
HashSet<Foo> hs = new LinkedHashSet<Foo>();
这将为您提供一个外部世界将其视为普通HashSet
但在LinkedHashSet
内部使用实现的实例。不过,我不明白为什么你会想要这样做——你只会获得一堆开销并且没有额外的功能,因为声明的类型是HashSet
. 您首先要使用 LinkedHashSet 的原因是为了保证可预测的迭代顺序,但您仍然无法假设hs
- 例如,您可以随时分配hs = new HashSet<Foo>()
。
于 2013-07-28T13:51:38.190 回答