我尝试了4次,每次打印结果都是按照 输入的 倒叙 打印出来。打印不是无序的吗?还是因为for遍历keyset取得的键 是有序的?
不是因为for的原因,你用iterator遍历也是一样的结果。
首先你要知道Java中无序(unordered),有序(ordered)是什么意思,它们跟我们我们所理解的可能不太一样.
在Java中无序指的是Java语言没有规定某个容器按什么顺序遍历,在不同的Java虚拟机上对某个容器的实现是不一样,比如说运行在Windows和Linux上的Java虚拟机对HashSet的遍历顺序可能不太一样,但对同一种虚拟机来说遍历输出都是一样的。而不是我们日常所理解的"无序就是乱序"的意思。
有序也是一样的道理,Java规定了容器的遍历顺序,在不同的Java虚拟机上要保证遍历的顺序跟加入元素的顺序一致。
通俗地来讲,在Java中无序就是不同的Java虚拟机对某个容器有不同的遍历方法,但对每一个具体的虚拟机它们的遍历方法是固定的.比如你遇到的情况在Windows上运行的Java虚拟机对HashSet的遍历只有一种输出方式,但你换一个Java虚拟机跑一跑你这个程序可能输出就不一样了。
不知道你懂了没,感觉很通俗了,希望对你有帮助!