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

来源:5-2 学生选课---使用 Map 添加学生

莫失聪聪3779259

2018-03-29 09:33

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

写回答 关注

1回答

  • Paradoxea
    2018-03-29 12:34:13
    已采纳

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

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

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

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

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

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

    莫失聪聪37...

    谢谢,原来是对“有序,无序”理解的偏差。

    2018-03-30 10:57:44

    共 1 条回复 >

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题