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随机访问.