Hae*_*aes 6 java hashmap hashset
我有一个非常大(100'000s的条目)HashMap.现在,我需要HashSet包含所有键HashMap.不幸的是,HashMap只有一个keySet()返回a Set但不是a的方法HashSet.
HashSet使用Java 生成这样一个有效的方法是什么?
KLE*_*KLE 19
为什么你特别需要一个HashSet?
任何Set具有相同的接口,因此通常可以互换使用,因为良好实践要求您对所有这些使用Set接口.
如果你真的需要,你可以从另一个创建一个.对于通用代码,它可以是:
Map<B, V> map = ...;
HashSet<B> set = new HashSet<B>(map.keySet());
Run Code Online (Sandbox Code Playgroud)
假设"有效"这个词是你问题的关键部分,并且根据你想要对集合做什么,创建你自己的HashSet子类可能是一个想法,它忽略了HashSet实现并提供了一个现有的视图.相反,地图.
作为部分实现的示例,它可能看起来像:
public class MapBackedHashSet extends HashSet
{
private HashMap theMap;
public MapBackedHashSet(HashMap theMap)
{
this.theMap = theMap;
}
@Override
public boolean contains(Object o)
{
return theMap.containsKey(o);
}
/* etc... */
}
Run Code Online (Sandbox Code Playgroud)
如果您不知道如何使用该类,则需要注意覆盖所有相关方法.
| 归档时间: |
|
| 查看次数: |
12660 次 |
| 最近记录: |