ArrayListの挿入と取得の順序


88

に5つの文字列を挿入するとしArrayListます。からの挿入と取得の順序はArrayList同じですか?


88
一度試してみるのもひとつ。それが毎回同じであることを確認することは別のものです。
Suragch 2015

回答:


81

以下のコードを確認して実行してください:

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)


7
その順序を明確に説明するJavaドキュメントへのリンクを含めるための+1。
Ogre Psalm33 2013年

20
サンプル出力が役立つでしょう
nilesh

1
素晴らしい例。+1。
Pawan Tiwari

123

はい。ArrayListは順次リストです。したがって、挿入と取得の順序は同じです。

取得中に要素を追加した場合、順序は変わりません。


1
OPが最後に「挿入」する場合、追加とも呼ばれます。
Peter Lawrey、2012

2
2番目のステートメントは、あるスレッドによる検索中に別のスレッドが介入して新しい要素を追加する場合を意味します。その後、注文は同じままではありません
xpioneer

38

常に最後に追加すると、各要素は最後に追加され、変更するまでそのままになります。

常に最初から挿入すると、各要素は追加した順序と逆の順序で表示されます。

真ん中に挿入すると、順番が違うものになります。


12

はい、常に同じです。ドキュメントから

指定された要素をこのリストの最後に追加します。パラメータ:このリストに追加される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;
}

-1

はい、同じままです。しかし、なぜそれを簡単にテストしないのですか?ArrayListを作成し、それを入力して、要素を取得します!


19
しかし、それは証明ではありません。
YoTengoUnLCD 2016

1
同じ順序はテストの可能な結果の1つにすぎません。実装がブラックボックスの場合、同じ順序が特定のケースになる可能性があります。例はソートされたリストです。ソートされたリストに要素を適切な順序で追加すると、それらをソートされた順序で取得できます(これは特定のケースにすぎません)が、ランダムな順序で要素を追加すると、順序付けされます。実装をチェックせずにArrayListをテストすると、「おそらく順序は同じです」とだけ表示されます。
simar 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.