有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

集合是否存在只接受一个条目并允许从映射中获取值的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) 个答案

  1. # 1 楼答案

    我认为HashSet是您应该使用的-如果您没有真正的键/值关系,那么它应该是您所需要的全部。您可以通过对集合进行迭代来获取这些值

    不清楚你的get(index)打算返回什么。。。这里的索引是什么

    如果需要保留插入顺序,可以使用LinkedHashSet

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