Jika Anda memeriksa API untuk List
Anda akan melihat isinya:
Interface List<E>
Menjadi interface
sarana itu tidak bisa dipakai (tidak new List()
mungkin).
Jika Anda memeriksa tautan itu, Anda akan menemukan beberapa class
es yang menerapkan List
:
Semua Kelas Pelaksana yang Dikenal:
AbstractList
, AbstractSequentialList
, ArrayList
, AttributeList
, CopyOnWriteArrayList
, LinkedList
, RoleList
, RoleUnresolvedList
, Stack
,Vector
Itu bisa dipakai. Gunakan tautan mereka untuk mengetahui lebih banyak tentang mereka, IE: untuk mengetahui mana yang lebih sesuai dengan kebutuhan Anda.
3 yang paling umum digunakan mungkin adalah:
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
Bonus:
Anda juga dapat instantiate dengan nilai-nilai, dengan cara yang lebih mudah, menggunakan Arrays
class
, sebagai berikut:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
Tetapi perhatikan, Anda tidak diizinkan menambahkan lebih banyak elemen ke daftar itu, karena hal itu fixed-size
.
int[] a = {1,2,3}; System.out.println(Arrays.asList(a)); // [[I@70cdd2]
ArrayList
, gunakannew ArrayList<>(Arrays.asList("sup1", "sup2", "sup3"))
Tidak dapat membuat instance antarmuka tetapi ada beberapa implementasi:
JDK2
JDK7
JDK8
JDK9
Plus ada banyak cara lain yang disediakan oleh perpustakaan lain seperti Jambu .
sumber
Daftar adalah Antarmuka , Anda tidak dapat membuat instance Antarmuka, karena antarmuka adalah konvensi, metode apa yang harus dimiliki kelas Anda. Untuk instantiate, Anda memerlukan beberapa realisasi (implementasi) dari antarmuka itu. Coba kode di bawah ini dengan implementasi Daftar antarmuka yang sangat populer:
atau
sumber
Anda harus menggunakan
ArrayList<String>
atau semacamnya.List<String>
adalah sebuah antarmuka.Gunakan ini:
sumber
Daftar adalah antarmuka, dan Anda tidak dapat menginisialisasi antarmuka. Instantiate kelas implementasi sebagai gantinya.
Suka:
sumber
Daftar hanyalah sebuah antarmuka, definisi dari beberapa daftar generik. Anda perlu menyediakan implementasi antarmuka daftar ini. Dua yang paling umum adalah:
ArrayList - daftar yang diimplementasikan pada array
LinkedList - daftar yang diimplementasikan seperti rantai elemen yang saling berhubungan
sumber
Dalam kebanyakan kasus, Anda ingin sederhana
ArrayList
- sebuah implementasi dariList
Sebelum JDK versi 7
JDK 7 dan kemudian Anda dapat menggunakan operator berlian
Informasi lebih lanjut ditulis di sini dokumentasi Oracle - Koleksi
sumber
Tergantung pada jenis Daftar yang ingin Anda gunakan, sesuatu seperti
harus membuat Anda pergi.
Daftar adalah antarmuka, ArrayList adalah salah satu implementasi dari antarmuka Daftar. Lebih banyak implementasi yang mungkin lebih sesuai dengan kebutuhan Anda dapat ditemukan dengan membaca JavaDocs dari antarmuka Daftar .
sumber
Jika Anda hanya ingin membuat yang tidak dapat diubah
List<T>
dengan hanya satu objek di dalamnya, Anda dapat menggunakan API ini:Info lebih lanjut: dokumen
sumber
Daftar adalah Antarmuka. Anda tidak dapat menggunakan Daftar untuk menginisialisasi itu.
Ini adalah beberapa kelas yang diterapkan Daftar,
Anda dapat menggunakan semua ini sesuai kebutuhan Anda. Masing-masing kelas memiliki fitur sendiri.
sumber
Untuk jaga-jaga, ada yang masih ada di sekitar pertanyaan ini. Karena, saya melihat satu atau dua pengguna baru lagi menanyakan pertanyaan yang sama dan semua orang mengatakan, Tidak , Anda tidak dapat melakukannya, Dear Prudence , Terlepas dari semua jawaban yang diberikan di sini, saya ingin memberikan Informasi tambahan - Ya, Anda sebenarnya dapat lakukan, Daftar daftar = Daftar baru (); Tetapi dengan biaya penulisan implementasi semua metode Antarmuka. Gagasannya bukan hanya Daftar daftar = Daftar baru (); tapi
..... dan seterusnya (Cant menulis semua metode.)
Ini adalah contoh kelas Anonim . Itu benar ketika seseorang menyatakan, Tidak , Anda tidak dapat membuat instance antarmuka, dan itu benar. Tetapi Anda tidak pernah bisa mengatakan, Anda TIDAK BISA menulis Daftar daftar = Daftar baru (); tetapi, jelas Anda bisa melakukan itu dan itu pernyataan sulit untuk membuat Anda tidak bisa melakukannya .
sumber
List
. Sebaliknya, ia mendeklarasikan kelas baru yang tidak memiliki nama dan implementasiList
, dan pada saat run-time membuat objek baru dari kelas yang baru dideklarasikan.Kami membuat soyuz-to untuk menyederhanakan 1 masalah: cara mengonversi
X
keY
(misalnyaString
keInteger
). Membangun suatu objek juga jenis konversi sehingga memiliki fungsi sederhana untuk membangunMap
,List
,Set
:Silakan periksa - ia memiliki banyak fitur berguna lainnya
sumber