集合是否存在只接受一个条目并允许从映射中获取值的Java映射?
对不起,如果我的问题有点混乱,这有点难以表达。我想实现一个集合(有点像一个映射,但用于单个值而不是成对值),在搜索其内容时执行哈希。我正在努力使我的程序真正高效。目前,该程序使用HashMap并将数据库中的主键添加到其中两次:
HashMap<Long, Long> userKeys = new HashMap<Long, Long>();
Some operations
userKeys.add(key, key);
是否有一个哈希或映射可以用来避免添加两次密钥?由于它是数据库中的主键,我知道不会有重复项,因此我认为哈希是有效的
我认为向量可能是一个不错的选择,但当我研究contains()方法时,它会遍历每个条目,在这种情况下效率会非常低
我也看过HashSet,但不幸的是,从我所看到的来看,与hashmap不同,没有提取值以便使用的方法。获取(对象)方法
所需设置:
Collection<Long> userKeys = new Collection<Long>();
Some operations
userKeys.add(key);
所需操作:
userKeys.contains(key)
<;-在这里使用哈希
userKeys.get(index)
提前感谢, 阿列克谢蓝
# 1 楼答案
我认为
HashSet
是您应该使用的-如果您没有真正的键/值关系,那么它应该是您所需要的全部。您可以通过对集合进行迭代来获取这些值不清楚你的
get(index)
打算返回什么。。。这里的索引是什么如果需要保留插入顺序,可以使用
LinkedHashSet
如果需要保留插入顺序和按插入顺序进行随机访问(即获取通过
get(2)
添加的第三个条目),则可以保留一个HashSet
和一个ArrayList
,使两者保持同步。(将它们封装在单独的类型中。)使用HashSet
进行包含测试,使用ArrayList
进行随机访问