Penyisipan ArrayList dan urutan pengambilan

90

Misalkan saya memasukkan 5 string dalam file ArrayList. Akankah urutan penyisipan dan pengambilan dari ArrayListsama?

naga dewa
sumber
90
Ini adalah satu hal untuk mencobanya sekali. Adalah hal lain untuk memastikan bahwa itu akan selalu sama setiap saat.
Suragch

Jawaban:

85

Ya, ArrayList adalah koleksi yang dipesan dan mempertahankan urutan penyisipan.

Periksa kode di bawah ini dan jalankan:

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);
        }
    }
}

Menghasilkan keluaran sebagai berikut:

Inserted in 'order': 
one
two
three
four
five


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

Untuk informasi lebih lanjut, lihat dokumentasi: List (Java Platform SE7)

axcdnt
sumber
9
1 untuk menyertakan link ke dokumen Java yang secara jelas menjelaskan pemesanan tersebut.
Ogre Mazmur33
21
Output sampel akan berguna
nilesh
1
Contoh yang bagus. 1 untuk ini.
Pawan Tiwari
Contoh bukanlah bukti, tetapi tautannya adalah
yoni
124

Iya . ArrayList adalah daftar berurutan . Jadi, urutan penyisipan dan pengambilan adalah sama.

Jika Anda menambahkan elemen selama pengambilan , urutannya tidak akan tetap sama.

Kalai Selvan Ravi
sumber
1
Jika OP "menyisipkan" di akhir, disebut juga menambahkan.
Peter Lawrey
2
pernyataan kedua berarti jika selama waktu pengambilan oleh satu utas, utas lain ikut campur untuk menambahkan elemen baru. maka urutannya tidak tetap sama
xpioneer
38

Jika Anda selalu menambahkan di akhir, maka setiap elemen akan ditambahkan di akhir dan tetap seperti itu sampai Anda mengubahnya.

Jika Anda selalu memasukkan di awal, maka setiap elemen akan muncul dalam urutan terbalik saat Anda menambahkannya.

Jika Anda memasukkannya di tengah, urutannya akan menjadi sesuatu yang lain.

Peter Lawrey
sumber
12

Ya, itu akan selalu sama. Dari dokumentasi

Menambahkan elemen yang ditentukan ke akhir daftar ini. Parameter: elemen e yang akan ditambahkan ke daftar ini. Returns: true (seperti yang ditentukan oleh Collection.add (java.lang.Object))

add()Implementasi ArrayList

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

Ya tetap sama. tapi kenapa tidak dengan mudah mengujinya? Buat ArrayList, isi, lalu ambil elemennya!

Mehsah Yhook
sumber
20
Itu bukan bukti.
YoTengoUnLCD
1
Urutan yang sama hanyalah salah satu kemungkinan hasil tes. Jika implementasinya adalah blackbox, urutan yang sama mungkin untuk kasus tertentu. Contoh adalah daftar yang diurutkan. Jika Anda menambahkan elemen ke daftar yang diurutkan dengan urutan yang benar, Anda bisa mendapatkannya dalam urutan yang diurutkan (yang hanya untuk kasus tertentu), tetapi jika Anda menambahkannya dalam urutan acak, Anda membuatnya diurutkan. Menguji ArrayList tanpa memeriksa implementasi hanya akan menyatakan "kemungkinan besar urutannya sama".
simar