java - HashMap 在第 12 个索引中插入第一条记录

标签 java dictionary hashmap linkedhashmap

我正在将一个 ArrayList 插入到映射中(对象 ID 作为键,对象作为值)。

第一次插入发生在第 12 个索引处。

由于 HashMap 的默认大小为 16,因此它在第一个索引中插入第 4 条记录。(因为索引到达最后意味着第 16 个)。

所以我的顺序错了。

即使我尝试使用 LinkedHashMap。同样的结果即将到来。

这是我的代码:

for (Type object: Objects) {
      map.put(object.obj.getId() , object);
    }

请帮我解决这个问题。

谢谢。

最佳答案

map 不适用于基于索引的访问。没有什么比 map.get(index) 更好的了。如其他答案/评论中所述,所有可能的都是在迭代时保留顺序:

for (Type object: Objects) {
    map.put(object.obj.getId() , object);
}
for (Entry entry: map.entrySet()) {
    // should be same order as inserted if LinkedHashMap is used
}

您不应该关心 map 的内部状态。所有重要的是 API 的描述行为.

关于java - HashMap 在第 12 个索引中插入第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44046051/

相关文章:

swift - “anyObject”无法转换为 'Dictionary<key, value>]'

python - 字典包含文本文件中的单词作为键,所有后续单词的列表作为值

python - 为什么 dicts 比任何 int 都大?

java - Junit:如何使用 Get Class Instance 进行断言

java - 如何使 RMI 服务器同时为本地客户端(同一网络内)和外部客户端工作

java - Java 中的工作线程

java - 通过 xpath 永远在 org.w3c.dom 文档中查找节点并返回 null

java - 没有HashMap可以做到这一点吗?

java - 尽管 key 存在并且相同,为什么 containsKey(String) 在我的程序中返回 false?

Java - 在不覆盖的情况下向现有 HashMap 键添加另一个字符串值?