我刚看了IT黑马的同一个教学视频,我当时也没看懂,不过我现在有了一点猜想。
我想你的疑惑是单链表理论上明明是可以做到有序的(比如用C++,程序员来安排每个节点的指针),但为什么这里说单链是无序的呢?我觉得这有可能和这个类的底层实现机制有关系。
例如在插入的时候,JVM优先考虑的是存储空间上的顺序以提高执行效率,所以这条链的顺序可能是节点在堆内存上的顺序,所以对于它存储的信息或是存入的先后而言就是无序的了。至于双链表为什么有序,则可能是因为设计者认为已经用一条链保证了链表结构和执行效率,那么第二条链就没有必要按部就班的成为第一条链的反向,而可以被用来记录你要的顺序,因此双向链表是有序的。
其实我也不知道我的猜想是否正确,我没有看过这两个类的实现代码,不过既然大家都这么说,那咱们这么记就行了,毕竟封装性么,少操一点心也没什么不好。
但我还是觉得奇怪,毕竟要实现一个有序单链也不怎么费劲。
从你的截图里面已经说明的很清楚了,单向的无法确认方向,也就是A,B相连,可以是A到B,也可能是B到A,那么取B的下一个节点,可能是A,也可能是B,这样无法确认
没错呀,你只能知道下一个节点,但是你不知道这个节点在整个链表中是第几个节点啊,双向链表就是用另一条链表给这一条链表上的节点排序。