是否有一个只有一个条目的Java地图,并允许从地图中获取值?

Ale*_*lue 3 java collections hash map

对不起,如果我的问题有点令人困惑,那就很难说.我想要实现一个集合(有点像地图但是对于单个值而不是对)在搜索其内容时执行散列.我正在努力使我的程序真正有效.目前,该程序使用HashMap并将数据库中的主键添加到它两次:

HashMap<Long, Long> userKeys = new HashMap<Long, Long>();
Some operations
userKeys.add(key, key);
Run Code Online (Sandbox Code Playgroud)

我可以使用哈希或地图来避免两次添加密钥吗?由于它是数据库中的主键,我知道不会有重复,因此我认为哈希是高效的.

我认为Vector可能是一个不错的选择但是当我查看contains()方法时,它会遍历每个条目,在这种情况下效率非常低.

我还看了一下HashSet,但不幸的是,从我看到的那里,没有提取值的方法可以使用它们,这与HashMaps.get(Object)方法不同.

期望的设置:

Collection<Long> userKeys = new Collection<Long>();
Some operations
userKeys.add(key);
Run Code Online (Sandbox Code Playgroud)

期望的操作:

userKeys.contains(key) < - 在这里使用哈希

userKeys.get(index)

谢谢先进的Alexei Blue.

Jon*_*eet 11

我认为HashSet你应该使用的是 - 如果你没有真正的关键/价值关系,它应该是你所需要的.您可以通过迭代集合来获取值.

目前还不清楚你get(index)的意思是什么......这里的索引是什么?

如果您需要保留广告订单,则可以使用LinkedHashSet.

如果您需要保留插入顺序并按插入顺序随机访问(即获取您添加的第三个条目get(2)),那么您可以保留a HashSet和a ArrayList,使两者保持同步.(将它们封装在单独的类型中.)使用HashSetfor包含测试和ArrayList随机访问.

  • @AlexeiBlue:到目前为止你所说的一切都没有表明`HashSet`不合适.只需使用`for(Long value:set)`来迭代它. (2认同)