elements of HashMap are in the wrong order
本问题已经有最佳答案,请猛点这里访问。
我需要从文件中读取两列(都是String),并将第一列的值保存在HashMap中,其中Integer是计数器。
例如,如果我正在阅读的文件是
1 2 3 4 | Apple Fruit PC Device Pen Tool ... |
而代码是
1 2 3 4 5 6 7 8 9 10 | String line=""; int counter=1; BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"),"Unicode")); while ((line = reader.readLine()) != null) { String[] words; words= st.split(""); tokens.put(counter, words[0]); counter+=1; } |
问题是当我打印HashMap值时,我发现值与origianl文件中的值的顺序不同
1 2 3 4 |
我得到了以下内容
1 2 3 4 | 1 Apple 3 Pen 4 whatever 2 ..etc |
我不知道是什么问题?! 你可以帮助我吗?
正如文档明确指出的那样,HashMaps是无序的。
枚举顺序由键的hascodes
如果要在枚举地图时保留插入顺序,请使用
如果您希望枚举顺序遵循键的自然顺序,请使用
编辑:感谢那些提出这一点:
如果您想要遵守项目的顺序,可以使用
它们之间的区别在于
在大多数情况下,您希望使用
我的建议是你应该参考官方文档。在那里你会找到彻底的解释。
此外,迭代
如果要返回插入顺序,请使用LinkedHashMap。默认情况下,HashMap的迭代器不保证插入顺序。