Kami membuat Set
sebagai:
Set myset = new HashSet()
Bagaimana cara membuat List
di Java?
java
list
collections
pengguna93796
sumber
sumber
Jawaban:
atau dengan obat generik ( Java 7 atau lebih baru)
atau dengan obat generik (Versi java lama)
sumber
Selain itu, jika Anda ingin membuat daftar yang memiliki banyak hal di dalamnya (meskipun ukurannya akan diperbaiki):
sumber
Biarkan saya meringkas dan menambahkan sesuatu:
JDK
Jambu biji
Daftar Abadi
Kosongkan Daftar abadi
Daftar Karakter
Daftar Integer
sumber
Ints.asList
tidak membuat daftar tetap, tetapi daftar ukuran tetap didukung oleh array int yang diberikan (yaitu mendukungList.set(int, Object)
). Contoh kedua "Daftar Karakter yang Tidak Berubah" juga tidak berubah (saya akan menghapus baris itu).Di Jawa 8
Untuk membuat daftar ukuran tetap yang tidak kosong (operasi seperti menambah, menghapus, dll., Tidak didukung):
Untuk membuat daftar mutable yang tidak kosong:
Di Jawa 9
Menggunakan
List.of(...)
metode pabrik statis baru :Di Jawa 10
Menggunakan Inferensi Tipe Variabel Lokal :
Dan ikuti praktik terbaik ...
Jangan gunakan jenis mentah
Sejak Java 5, obat generik telah menjadi bagian dari bahasa - Anda harus menggunakannya:
Program untuk antarmuka
Misalnya, programkan ke
List
antarmuka:Dari pada:
sumber
Pertama baca ini , lalu baca ini dan ini . 9 kali dari 10 Anda akan menggunakan salah satu dari dua implementasi itu.
Bahkan, baca saja kerangka kerja Sun's Guide to the Collections .
sumber
ArrayList
. Jika saya hanya bekerja dengan ujung daftar, itu adalah deque (atau antrian) dan saya menggunakanArrayDeque
implementasinya. Alasannya adalah bahwa meskipun implementasi berbasis array mungkin membuang beberapa memori pada slot kosong (ketika saya tidak dapat memprediksi kapasitas yang diperlukan), untuk koleksi kecil ini sebanding dengan overhead semua contoh node dalam daftar tertaut ( atau deque). Dan sebagai imbalannya, saya mendapatkan akses acak. Apa manfaat unik yangLinkedList
diberikan?sumber
Karena Java 7 Anda memiliki tipe inferensi untuk pembuatan instance generik , jadi tidak perlu menduplikasi parameter generik di sisi kanan tugas:
Daftar ukuran tetap dapat didefinisikan sebagai:
Untuk daftar abadi Anda dapat menggunakan perpustakaan Guava :
sumber
Daftar hanyalah antarmuka seperti Set .
Seperti HashSet adalah implementasi dari Set yang memiliki properti tertentu dalam hal menambah / mencari / menghapus kinerja, ArrayList adalah implementasi telanjang dari Daftar.
Jika Anda melihat dokumentasi untuk antarmuka masing-masing, Anda akan menemukan "Semua Kelas Implementasi yang Diketahui" dan Anda dapat memutuskan mana yang lebih cocok untuk kebutuhan Anda.
Kemungkinannya adalah ArrayList .
sumber
List
adalah antarmuka sepertiSet
dan memilikiArrayList
danLinkedList
sebagai implementasi tujuan umum .Kami dapat membuat Daftar sebagai:
Kami juga dapat membuat daftar ukuran tetap sebagai:
Kami hampir selalu menggunakan
ArrayList
menentangLinkedList
implementasi:LinkedList
menggunakan banyak ruang untuk objek dan berkinerja buruk ketika kita memiliki banyak elemen.LinkedList
membutuhkan O (n) waktu dibandingkan dengan O (1) padaArrayList
.Daftar yang dibuat oleh di
Arrays.asList
atas tidak dapat dimodifikasi secara struktural tetapi elemen-elemennya masih dapat dimodifikasi.Java 8
Sesuai dok , metode ini
Collections.unmodifiableList
mengembalikan tampilan daftar yang ditentukan yang tidak dapat dimodifikasi. Kita bisa mendapatkannya seperti:Jawa 9
Jika kita menggunakan Java 9 maka:
Java 10
Dalam kasus kita berada di Jawa 10 maka metode
Collectors.unmodifiableList
akan mengembalikan sebuah instance dari daftar yang benar-benar unmodifiable diperkenalkan di Jawa 9. Periksa ini jawaban untuk info lebih lanjut tentang perbedaan dalamCollections.unmodifiableList
vsCollectors.unmodifiableList
di Jawa 10 .sumber
Terkadang - tetapi jarang - bukan ArrayList baru, Anda mungkin menginginkan LinkedList baru. Mulailah dengan ArrayList dan jika Anda memiliki masalah kinerja dan bukti bahwa daftar itu adalah masalahnya, dan banyak menambah dan menghapus daftar itu - lalu - bukan sebelum - beralih ke LinkedList dan lihat apakah semuanya membaik. Tapi di main, tetap dengan ArrayList dan semua akan baik-baik saja.
sumber
Atau dengan obat generik
Anda dapat, tentu saja, mengganti string dengan semua jenis variabel, seperti Integer, juga.
sumber
Satu contoh:
Anda dapat melihat javadoc untuk Daftar dan menemukan semua kelas implementasi yang dikenal dari
List
antarmuka yang disertakan dengan java api.sumber
Menggunakan Google Collections , Anda dapat menggunakan metode berikut di kelas Daftar
Ada kelebihan untuk inisialisasi varargs dan inisialisasi dari
Iterable<T>
.Keuntungan dari metode ini adalah Anda tidak perlu menentukan parameter generik secara eksplisit seperti yang Anda lakukan dengan konstruktor - kompiler akan mengambilnya dari jenis variabel.
sumber
Anda perlu mengimpor
List
danArrayList
.sumber
Lebih banyak opsi untuk melakukan hal yang sama dengan Java 8, tidak lebih baik, tidak lebih buruk, hanya berbeda dan jika Anda ingin melakukan beberapa pekerjaan tambahan dengan daftar, Streams akan memberi Anda lebih banyak alternatif (filter, peta, kurangi, dll.)
sumber
Dengan Java 9, Anda dapat melakukan hal berikut untuk membuat yang tidak berubah
List
:sumber
Sebagai opsi, Anda dapat menggunakan inisialisasi penjepit ganda di sini:
sumber
Ada banyak cara untuk membuat Set dan Daftar. HashSet dan ArrayList hanyalah dua contoh. Ini juga cukup umum untuk menggunakan obat generik dengan koleksi saat ini. Saya sarankan Anda melihat apa itu
Ini adalah pengantar yang bagus untuk koleksi builtin java. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
sumber
Lebih baik Anda menggunakan obat generik seperti yang disarankan di bawah ini:
Jika Anda menggunakan LinkedList.
sumber
Menggunakan Eclipse Collections Anda dapat membuat Daftar seperti ini:
Jika Anda ingin daftar abadi:
Anda dapat menghindari tinju otomatis dengan menggunakan daftar primitif. Inilah cara Anda membuat daftar int:
Ada varian untuk semua 8 primitif.
Catatan: Saya pengendara untuk Eclipse Collections.
sumber
Berikut ini adalah beberapa cara Anda dapat membuat daftar.
Ini akan membuat daftar dengan ukuran tetap, menambahkan / menghapus elemen tidak mungkin, itu akan melempar
java.lang.UnsupportedOperationException
jika Anda mencoba melakukannya.Versi berikut adalah daftar sederhana di mana Anda dapat menambah / menghapus sejumlah elemen.
Ini adalah cara membuat
LinkedList
di java, Jika Anda perlu sering melakukan penyisipan / penghapusan elemen pada daftar, Anda harus menggunakanLinkedList
alih-alihArrayList
sumber
Arrays.asList("Male", "Female")
.Coba ini:
Atau:
sumber
Jika Anda membutuhkan daftar yang bisa diubah-ubah dan serial dengan satu entitas, Anda dapat menggunakan:
sumber
Seperti deklarasi daftar array di java adalah seperti
Ada banyak cara Anda dapat membuat dan menginisialisasi daftar array di java.
sumber