Java中的HashMap,为什么输出竟然是有序的

料青山看我应如是
浏览 5092回答 2
2回答

长风秋雁

你是遇到巧合了吧,例如使用如下代码输出:123456789public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;Map<String,&nbsp;String>&nbsp;map&nbsp;=&nbsp;new&nbsp;HashMap<>();&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;10;&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(i&nbsp;+&nbsp;"",&nbsp;i&nbsp;+&nbsp;"");&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;key&nbsp;:&nbsp;map.keySet())&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(key);&nbsp;&nbsp;&nbsp;&nbsp;}}但是你再试试下面这段代码输出就和输入顺序不一致了:123456789public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;Map<String,&nbsp;String>&nbsp;map&nbsp;=&nbsp;new&nbsp;HashMap<>();&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;8;&nbsp;i&nbsp;<&nbsp;15;&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(i&nbsp;+&nbsp;"",&nbsp;i&nbsp;+&nbsp;"");&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;key&nbsp;:&nbsp;map.keySet())&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(key);&nbsp;&nbsp;&nbsp;&nbsp;}}前面之所以有序是因为这些key通过哈希后也是连续的,遍历时就变成有顺序了。

慕桂英4014372

HashMap输出的无序的,因为哈希算法存值和取值的时候没有顺序性。 想做到先进先出,之类的顺序。要用 LinkedHashMap 或TreeMap
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java