【发布时间】:2010-12-10 04:40:59
【问题描述】:
我有一个相当大的(100'000 个条目)HashMap。现在,我需要一个HashSet,其中包含来自此HashMap 的所有键。不幸的是,HashMap 只有一个 keySet() 方法,它返回一个 Set 而不是一个 HashSet。
使用 Java 生成这样的HashSet 的有效方法是什么?
【问题讨论】:
-
为什么需要一个 HashSet 而不仅仅是一个 Set?
-
我必须调用的方法需要一个HashSet,而相应的代码不是我写的。
-
哇。编写该方法的人需要很好的交谈。 :)
-
+1 您的评论说明了一切。很高兴您找到了解决方案。 :-)
-
@Haes:您应该知道性能受到影响。当您从 keySet() 构造 HashSet 时,它基本上必须复制整个集合。我不确定在 100,000 个元素上执行此操作需要多长时间,但它肯定会占用大量内存。我知道你没有其他选择,但这可能会给你更多的弹药来请求编写方法的人来更改它,因此它需要一个 Set 而不是 HashSet。 (除非他们在做一些非常奇怪的事情,否则他们应该能够只更改参数,其余部分无需修改即可工作)。