ArrayList插入和检索顺序

假设我在ArrayList插入5个string。 从ArrayList插入和检索的顺序是相同的吗?

检查下面的代码并运行它:

 public class ListExample { public static void main(String[] args) { List<String> myList = new ArrayList<String>(); myList.add("one"); myList.add("two"); myList.add("three"); myList.add("four"); myList.add("five"); System.out.println("Inserted in 'order': "); printList(myList); System.out.println("\n"); System.out.println("Inserted out of 'order': "); // Clear the list myList.clear(); myList.add("four"); myList.add("five"); myList.add("one"); myList.add("two"); myList.add("three"); printList(myList); } private static void printList(List<String> myList) { for (String string : myList) { System.out.println(string); } } } 

生成以下输出:

 Inserted in 'order': one two three four five Inserted out of 'order': four five one two three 

有关详细信息,请参阅文档: List (Java Platform SE7)

是的 。 ArrayList是一个顺序列表 。 所以,插入和检索顺序是一样的。

如果在检索过程中添加元素,订单将不会保持不变。

如果你总是添加到最后,那么每个元素将被添加到最后,并保持这种状态直到你改变它。

如果你总是在开始时插入,那么每个元素将以相反的顺序出现。

如果你在中间插入他们,订单将是别的东西。

是的,它永远是一样的。 从文档

将指定的元素附加到此列表的末尾。 参数:要附加到此列表的e元素返回:true(由Collection.add(java.lang.Object)指定)

ArrayList的add()实现

 public boolean More ...add(E e) { ensureCapacity(size + 1); // Increments modCount!! elementData[size++] = e; return true; } 

是的,它保持不变。 但为什么不轻易testing呢? 做一个ArrayList,填充它,然后检索元素!