Penyisipan ArrayList dan urutan pengambilan


90

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


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)


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.


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.


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

-1

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.