java - 假设我有一个好的 key ,当不适合在java中使用 map 时

标签 java data-structures arraylist hashmap

Possible Duplicate:
When to use HashMap over LinkedList or ArrayList and vice-versa

自从遇到Maps在Java中我一直在广泛使用它们。特别是HashMap对于许多场景来说都是一个很好的选择。看起来它胜过 ArrayList在每个类别中 - 有人说迭代是不可预测的,但为此我们有 LinkedHashMap

所以,我的问题是:为什么不使用 HashMap只要我们有一个可靠的不可变 key ,就一直可以吗?

此外,使用像 HashMap 这样的东西是否合适?对于非常少量(<10)的项目,或者是否有一些我没有考虑的额外开销?

最佳答案

当您的键是连续整数时,请使用ArrayList。 (如果它们不是基于 0,则只需使用偏移量。)访问(特别是随机访问)和更新效率更高。否则,当然,HashMap(或者,正如您所说,LinkedHashMap)是非常有用的数据结构。

我相信 HashMap 的默认初始大小是 16 个存储桶,因此对于非常小的列表会产生一些开销。但除非您要创建大量 map ,否则它不应该成为编码中的一个因素。

关于java - 假设我有一个好的 key ,当不适合在java中使用 map 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225125/

相关文章:

java - 加密程序加密时返回奇怪的字符串,但解密后返回正确的字符串

java - 嵌套同步块(synchronized block)有必要吗?

java - 在 servlet 中添加用户计数器的功能

c++ - 对于 BTreeMap 和其他依赖 Ord 的事物,是否有等效于 C++ 比较器对象的对象?

java - 为什么要使类成为final来创建不可变对象(immutable对象)

java - List<MyModel>.contains(MyModel) java 不工作

java - 为什么 arraylist.contains() 不起作用?

java - 如何判断2个不同的单词是否具有相同的字母?

java - 尝试在空对象引用上调用虚拟方法 'android.view.View android.view.View.findViewById(int)'

flutter - Map <string,string>参数