为了账号安全,请及时绑定邮箱和手机立即绑定

关于老师最后说 有序无序问题

我尝试了4次,每次打印结果都是按照 输入的 倒叙 打印出来。打印不是无序的吗?还是因为for遍历keyset取得的键 是有序的?

正在回答

1 回答

  不是因为for的原因,你用iterator遍历也是一样的结果。

  首先你要知道Java中无序(unordered),有序(ordered)是什么意思,它们跟我们我们所理解的可能不太一样.

  在Java中无序指的是Java语言没有规定某个容器按什么顺序遍历,在不同的Java虚拟机上对某个容器的实现是不一样,比如说运行在Windows和Linux上的Java虚拟机对HashSet的遍历顺序可能不太一样,但对同一种虚拟机来说遍历输出都是一样的。而不是我们日常所理解的"无序就是乱序"的意思。

  有序也是一样的道理,Java规定了容器的遍历顺序,在不同的Java虚拟机上要保证遍历的顺序跟加入元素的顺序一致。

  通俗地来讲,在Java中无序就是不同的Java虚拟机对某个容器有不同的遍历方法,但对每一个具体的虚拟机它们的遍历方法是固定的.比如你遇到的情况在Windows上运行的Java虚拟机对HashSet的遍历只有一种输出方式,但你换一个Java虚拟机跑一跑你这个程序可能输出就不一样了。

  不知道你懂了没,感觉很通俗了,希望对你有帮助!

5 回复 有任何疑惑可以回复我~
#1

莫失聪聪3779259 提问者

谢谢,原来是对“有序,无序”理解的偏差。
2018-03-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409790    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

关于老师最后说 有序无序问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信