Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hashmap在第12个索引中插入第一条记录_Java_Dictionary_Hashmap_Linkedhashmap - Fatal编程技术网

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

Java Hashmap在第12个索引中插入第一条记录,java,dictionary,hashmap,linkedhashmap,Java,Dictionary,Hashmap,Linkedhashmap,我正在将ArrayList插入映射(对象id作为键,对象作为值) 第一次插入发生在第12个索引处 因为HashMap的默认大小是16,所以它将在第一个索引中插入第四条记录(因为索引到达最后一条意味着第16条) 所以我点错菜了 甚至我也尝试了LinkedHashMap。同样的结果正在到来 这是我的代码: for (Type object: Objects) { map.put(object.obj.getId() , object); } 请帮我把这个修好 谢谢。Linked

我正在将ArrayList插入映射(对象id作为键,对象作为值)

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

因为HashMap的默认大小是16,所以它将在第一个索引中插入第四条记录(因为索引到达最后一条意味着第16条)

所以我点错菜了

甚至我也尝试了
LinkedHashMap
。同样的结果正在到来

这是我的代码:

for (Type object: Objects) {
      map.put(object.obj.getId() , object);
    }
请帮我把这个修好


谢谢。

LinkedHashMap正是您想要的


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

映射不用于基于索引的访问。没有什么比得上
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
}

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

您期望的顺序是什么?HashMap没有顺序?LinkedHashMap为您提供插入顺序。如果您想对键进行排序,请使用树形图。@Eran我正在一个映射中插入6条记录。插入从第12个索引开始。(我通过调试看到了。)但我希望从1号开始。你不能控制索引(至少不能直接控制)。该索引是根据
hashCode
确定的。你们不应该关心索引。那个么我怎么才能在地图的开头得到第一条插入的记录呢。我需要一个插入顺序。我也试过LinkedHashMap。它也给出了相同的结果(从12日开始),您的第一条记录仍然在原始列表中。如果您想跟踪插入对象的顺序,可以将ID存储在另一个列表中。最后一条记录正在开始插入。@SivaPasupathi否,LinkedHashMap的内部数据将其存储在hastable的某个索引中。这并不意味着它的行为是这样的。停止调试库并开始阅读API文档。如果您尝试一下我的示例,它将完全按照所描述的那样工作。存储在第12个索引中的元素将在迭代时首先出现。