ArrayList插入和检索顺序

div*_*gon 76 java collections

假设我插入了5个字符串ArrayList.插入和检索的顺序ArrayList是否相同?

Kal*_*avi 116

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

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

  • 第二个陈述对我来说不清楚! (16认同)
  • 第二个语句表示如果在一个线程检索期间另一个线程进行干预以添加新元素。那么订单不会保持不变 (2认同)

axc*_*dnt 71

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

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

Inserted in 'order': 
one
two
three
four
five


Inserted out of 'order': 
four
five
one
two
three
Run Code Online (Sandbox Code Playgroud)

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

  • 样本输出很有用 (18认同)
  • +1包含指向Java文档的链接,清楚地解释了订购. (6认同)

Pet*_*rey 38

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

如果始终在开头插入,则每个元素将按照添加它们的相反顺序显示.

如果将它们插入中间,则顺序将是其他内容.


Edu*_*nis 9

是的,它总是一样的.从文档中

将指定的元素追加到此列表的末尾.参数:要附加到此列表的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;
}
Run Code Online (Sandbox Code Playgroud)