前言:小白潜意识中LinkedList是有序的,所以感觉ArrayList不能保证遍历输出顺序和添加顺序一致.我也是这么想的,然后现实中发现总是能保证一致,于是百度了解了下,下面的解释感觉很有道理.
问:为什么说ArrayList是随机访问,不能保证添加的顺序一定和访问的顺序一致?这句话是否是错误的,我测试多次遍历的结果和添加的顺序都是一致的.
答:随机访问指的是,你可以随机访问任一个节点,而不需要通过当前节点查找后续节点,遍历访问模式请参考LinkedList的结构。ArrayList使用线性顺序存储结构,和数组一致,每个对象有一个index,index本身是有序的,所以你添加的时候,index有序增长,遍历的时候,按照index遍历,也是有序的。存放和访问顺序可能不一致,那需要在存放的时候就是随机存放的,比如HashMap,数据通过hash计算后无序存放,所以获取的时候也是随机的,需要存放和读取顺序一致,就要包装一层LinkedList,也就是LinkedHashMap
参考链接.