Jawaban:
Pertama: a List
adalah a Collection
. Namun, ini adalah spesialisasi Collection
.
A Collection
hanya itu: koleksi barang. Anda dapat menambahkan barang, menghapus barang, beralih di atas barang, dan menanyakan berapa banyak barang di sana.
A List
menambahkan informasi tentang urutan barang yang ditentukan untuknya: Anda bisa mendapatkan elemen di posisi n , Anda dapat menambahkan elemen di posisi n , Anda dapat menghapus elemen di posisi n .
Dalam Collection
Anda tidak dapat melakukan itu: "elemen ke-5 dalam koleksi ini" tidak ditentukan, karena tidak ada urutan yang ditentukan.
Ada Koleksi khusus lainnya juga, misalnya Set
yang menambahkan fitur yang tidak akan pernah mengandung elemen yang sama dua kali.
Collection
adalah antarmuka root ke hierarki java Koleksi. List
adalah salah satu sub antarmuka yang mendefinisikan Koleksi yang diurutkan, sub antarmuka lainnya Queue
yang biasanya akan menyimpan elemen yang siap diproses (misalnya tumpukan ).
Diagram berikut menunjukkan hubungan antara berbagai jenis koleksi java:
Map
bukan Collection
.
API Java adalah yang terbaik untuk menjawab ini
Koleksi
Antarmuka root dalam hierarki koleksi. Koleksi mewakili sekelompok objek, yang dikenal sebagai elemen-elemennya. Beberapa koleksi memungkinkan elemen duplikat dan yang lain tidak. Beberapa dipesan dan yang lainnya tidak teratur. JDK tidak menyediakan implementasi langsung dari antarmuka ini: ia menyediakan implementasi subinterfaces yang lebih spesifik seperti Set and List. Antarmuka ini biasanya digunakan untuk meneruskan koleksi dan memanipulasi mereka di mana generalisasi maksimum diinginkan.
Daftar (Koleksi yang diperluas)
Koleksi yang dipesan (juga dikenal sebagai urutan). Pengguna antarmuka ini memiliki kontrol yang akurat atas di mana dalam daftar setiap elemen dimasukkan. Pengguna dapat mengakses elemen dengan indeks integer mereka (posisi dalam daftar), dan mencari elemen dalam daftar.
Tidak seperti set, daftar biasanya memungkinkan elemen duplikat. Lebih formal, daftar biasanya memungkinkan pasangan elemen e1 dan e2 sedemikian rupa sehingga e1.equals (e2), dan mereka biasanya memungkinkan beberapa elemen null jika mereka mengizinkan elemen nol sama sekali. Tidak dapat dibayangkan bahwa seseorang mungkin ingin menerapkan daftar yang melarang duplikat, dengan melemparkan pengecualian runtime ketika pengguna mencoba memasukkannya, tetapi kami berharap penggunaan ini jarang terjadi.
Daftar dan Set adalah dua subclass dari Koleksi.
Dalam Daftar, data dalam urutan tertentu.
Di Set, itu tidak bisa berisi data yang sama dua kali.
Di Collection, ia hanya menyimpan data tanpa urutan tertentu dan dapat berisi data duplikat.
Collection adalah antarmuka tingkat tinggi yang mendeskripsikan objek Java yang dapat berisi koleksi objek lain. Tidak terlalu spesifik tentang bagaimana mereka diakses, apakah banyak salinan dari objek yang sama dapat ada dalam koleksi yang sama, atau apakah urutannya penting. Daftar adalah kumpulan objek yang dipesan secara khusus . Jika Anda memasukkan objek ke dalam Daftar dalam urutan tertentu, mereka akan tetap dalam urutan itu.
Dan memutuskan di mana harus menggunakan kedua antarmuka ini jauh lebih penting daripada memutuskan apa implementasi konkret yang Anda gunakan. Ini akan memiliki implikasi untuk kinerja waktu dan ruang program Anda. Misalnya, jika Anda ingin daftar, Anda bisa menggunakan ArrayList atau LinkedList, yang masing-masing akan memiliki implikasi untuk aplikasi. Untuk jenis koleksi lain (misalnya Perangkat), pertimbangan serupa berlaku.