103

假设我在一个ArrayList. 插入和检索的顺序ArrayList是否相同?

4

5 回答 5

133

的。ArrayList 是一个顺序列表。因此,插入和检索顺序是相同的。

如果您在检索期间添加元素,则顺序将不会保持不变。

于 2012-07-04T15:06:47.097 回答
99

是的,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)

于 2012-07-04T15:15:40.183 回答
38

如果您总是添加到末尾,那么每个元素都将添加到末尾并保持这种状态,直到您更改它。

如果您总是在开头插入,那么每个元素将以您添加它们的相反顺序出现。

如果将它们插入中间,则顺序会有所不同。

于 2012-07-04T15:06:59.250 回答
12

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

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

数组列表add()实现

public boolean More ...add(E e) {
    ensureCapacity(size + 1);  // Increments modCount!!
    elementData[size++] = e;
    return true;
}
于 2017-03-14T16:27:08.630 回答
-2

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

于 2012-07-04T15:12:20.667 回答