gpt4 book ai didi

java - 是否有一个 Java 映射只接受一个条目并允许从映射中获取值?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:59 24 4
gpt4 key购买 nike

我想实现一个集合(有点像 map ,但针对单个值而不是对值),在搜索其内容时执行散列。我正在努力使我的程序真正高效。目前该程序使用 HashMap 并将数据库中的主键添加到其中两次:

HashMap<Long, Long> userKeys = new HashMap<Long, Long>();
Some operations
userKeys.add(key, key);

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

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

我也看过 HashSet,但不幸的是,据我所见,与 HashMaps.get(Object) 方法不同,没有提取值以便使用它们的方法。

所需的设置:

Collection<Long> userKeys = new Collection<Long>();
Some operations
userKeys.add(key);

所需的操作:

userKeys.contains(key) <- 此处使用哈希

userKeys.get(索引)

最佳答案

我认为 HashSet 是您应该使用的 - 如果您真的没有键/值关系,它应该就是您所需要的。您可以通过遍历集合来获取值。

不清楚您的get(index) 是要返回什么……这里的索引是什么?

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

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

关于java - 是否有一个 Java 映射只接受一个条目并允许从映射中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com