哈希图在第 12 个索引中插入第一条记录
Hashmap inserting first record in 12th index
我正在将 ArrayList 插入映射(对象 ID 作为键,对象作为值)。
第一次插入发生在第 12 个索引处。
由于 HashMap 的默认大小为 16,因此它在第一个索引中插入第 4 条记录。(因为索引到达最后意味着第 16 个)。
所以我点错了。
我什至尝试过 LinkedHashMap
。同样的结果来了。
这是我的代码:
for (Type object: Objects) {
map.put(object.obj.getId() , object);
}
请帮我解决这个问题。
谢谢。
LinkedHashMap 正是您要找的。
它与 HashMap 非常相似,只是当您对其进行迭代时,它会按插入顺序显示项目。
地图不适用于基于索引的访问。没有什么比 map.get(index)
。如其他 answers/comments:
中所述,在迭代时尽可能保留顺序
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.
所描述的行为
我正在将 ArrayList 插入映射(对象 ID 作为键,对象作为值)。
第一次插入发生在第 12 个索引处。
由于 HashMap 的默认大小为 16,因此它在第一个索引中插入第 4 条记录。(因为索引到达最后意味着第 16 个)。
所以我点错了。
我什至尝试过 LinkedHashMap
。同样的结果来了。
这是我的代码:
for (Type object: Objects) {
map.put(object.obj.getId() , object);
}
请帮我解决这个问题。
谢谢。
LinkedHashMap 正是您要找的。
它与 HashMap 非常相似,只是当您对其进行迭代时,它会按插入顺序显示项目。
地图不适用于基于索引的访问。没有什么比 map.get(index)
。如其他 answers/comments:
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.
所描述的行为