Hashmap在第12个索引中插入第一条记录

时间:2017-05-18 11:06:46

标签: java dictionary hashmap linkedhashmap

我将ArrayList插入到map中(Object id作为键,对象作为值)。

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

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

所以我的订单错了。

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

这是我的代码:

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

请帮我解决这个问题。

感谢。

2 个答案:

答案 0 :(得分:1)

LinkedHashMap正是您所需要的。

它与HashMap完全相同,只是当您迭代它时,它会以插入顺序显示项目。

答案 1 :(得分:1)

地图不适用于基于索引的访问。没有像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
}

你不应该关心地图的内部状态。重要的是API所描述的行为。