Cara untuk menginisialisasi Daftar objek dalam Java?

Saya tidak dapat menginisialisasi Daftar seperti kode berikut:

List<String> supplierNames = new List<String>();
supplierNames.add("sup1");
supplierNames.add("sup2");
supplierNames.add("sup3");
System.out.println(supplierNames.get(1));

Saya menghadapi galat berikut:

Tidak instantiate jenis Daftar<String>

Bagaimana saya bisa instantiate Daftar<String>?

Larutan

Jika anda memeriksa API untuk Daftar anda'll melihat itu mengatakan:

Interface List

Menjadi seorang antarmuka berarti tidak bisa dipakai (tidak ada baru Daftar() mungkin).

Jika anda memeriksa bahwa link, anda'll menemukan beberapa kelas dia yang menerapkanDaftar`:

Semua Dikenal Melaksanakan Kelas:

AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vektor

Mereka dapat menjadi contoh. Menggunakan link mereka untuk tahu lebih banyak tentang mereka, I. E: untuk mengetahui mana yang lebih cocok dengan kebutuhan anda.

3 paling sering digunakan orang-orang yang mungkin adalah:

 List supplierNames1 = new ArrayList();
 List supplierNames2 = new LinkedList();
 List supplierNames3 = new Vector();

Bonus: Anda juga dapat menurunkannya dengan nilai-nilai, dengan cara yang lebih mudah, menggunakan Array kelas, sebagai berikut:

List supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));

Tapi catatan anda tidak diizinkan untuk menambahkan elemen ke dalam daftar itu, seperti's fixed-size.

Komentar (9)

Bisa't instantiate sebuah antarmuka tetapi ada beberapa implementasi:

JDK2

List list = Arrays.asList("one", "two", "three");

JDK7

//diamond operator
List list = new ArrayList();
list.add("one");
list.add("two");
list.add("three");

JDK8

List list = Stream.of("one", "two", "three").collect(Collectors.toList());

JDK9

// creates immutable lists, so you can't modify such list 
List immutableList = List.of("one", "two", "three");

// if we want mutable list we can copy content of immutable list 
// to mutable one for instance via copy-constructor (which creates shallow copy)
List mutableList = new ArrayList(List.of("one", "two", "three"));

Plus ada banyak cara lain yang disediakan oleh perpustakaan lain seperti Jambu.

List list = Lists.newArrayList("one", "two", "three");
Komentar (0)

Daftar adalah Antarmuka, anda tidak instantiate sebuah Interface, karena interface adalah sebuah konvensi, metode apa yang harus anda kelas. Dalam rangka untuk instantiate, anda perlu beberapa realisasi(implementasi) dari antarmuka tersebut. Coba kode di bawah ini dengan sangat populer implementasi dari Daftar interface:

List supplierNames = new ArrayList(); 

atau

List supplierNames = new LinkedList();
Komentar (0)

Anda akan perlu menggunakan ArrayList<String> atau semacamnya.

Daftar<String> adalah sebuah antarmuka.

Gunakan ini:

import java.util.ArrayList;

...

List supplierNames = new ArrayList();
Komentar (0)

Daftar aplikasi antarmuka, dan anda tidak dapat menginisialisasi sebuah antarmuka. Instantiate sebuah melaksanakan kelas sebaliknya.

Seperti:

List abc = new ArrayList();
List xyz = new LinkedList();
Komentar (0)

Dalam kebanyakan kasus, anda ingin sederhana ArrayList - sebuah implementasi dari Daftar

Sebelum JDK versi 7

List list = new ArrayList();

JDK 7 dan kemudian anda dapat menggunakan diamond operator

List list = new ArrayList();

Informasi yang ditulis di sini Oracle dokumentasi - Koleksi

Komentar (0)

Daftar hanya sebuah interface, definisi dari beberapa daftar generik. Anda perlu menyediakan sebuah implementasi dari daftar ini antarmuka. Dua yang paling umum adalah:

ArrayList - daftar dilaksanakan selama array

List supplierNames = new ArrayList();

LinkedList - daftar dilaksanakan seperti rantai yang saling berhubungan dari unsur-unsur

List supplierNames = new LinkedList();
Komentar (0)

Tergantung pada apa jenis Daftar yang ingin anda gunakan, sesuatu seperti

List supplierNames = new ArrayList();

harus membuat anda pergi.

Daftar antarmuka, ArrayList merupakan salah satu implementasi dari Daftar antarmuka. Lebih lanjut implementasi yang mungkin lebih sesuai dengan kebutuhan anda dapat menemukan dengan membaca JavaDocs Daftar interface.

Komentar (0)

Jika anda hanya ingin membuat sebuah abadi Daftar<T> dengan hanya one objek di dalamnya, anda bisa menggunakan API ini:

List oneObjectList = Collections.singletonList("theOnlyObject”);

Info lebih lanjut: docs

Komentar (0)

Daftar adalah sebuah Antarmuka . Anda bisa menggunakan Daftar untuk menginisialisasi.

  List supplierNames = new ArrayList();

Ini adalah beberapa Daftar diimplemetasikan kelas,

ArrayList, LinkedList, Vector

Anda bisa menggunakan ini sebagai per kebutuhan anda. Ini masing-masing kelas memiliki fitur sendiri.

Komentar (1)

Hanya dalam kasus, salah satu yang masih berlama-lama di sekitar pertanyaan ini. Karena, aku melihat satu atau dua pengguna baru lagi mengajukan pertanyaan yang sama dan semua orang mengatakan itu , Tidak ada yang dapat anda't melakukan itu, Sayang kehati-hatian, Terlepas dari semua jawaban yang diberikan di sini, saya ingin memberikan Informasi tambahan - Ya, anda dapat benar-benar melakukan, Daftar list = new List(); Tapi pada biaya penulisan implementasi dari semua metode dari Interface. Gagasan ini tidak hanya Daftar list = new List(); tapi

List list = new List(){

        @Override
        public int size() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public boolean isEmpty() {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean contains(Object o) {
            // TODO Auto-generated method stub
            return false;
        }

..... dan Sebagainya (tidak Bisa menulis semua metode.)

Ini adalah contoh dari Anonim kelas. Yang benar ketika seseorang serikat , Tidak ada anda tidak bisa instantiate sebuah antarmuka, dan yang's benar. Tapi anda tidak pernah bisa mengatakan , Anda tidak BISA menulis List List = new List(); tapi, jelas anda dapat melakukan itu dan bahwa's keras pernyataan untuk membuat yang dapat Anda't melakukan.

Komentar (1)

Kami menciptakan soyuz-to untuk menyederhanakan 1 masalah: bagaimana mengkonversi X untuk Y (misalnya, String untuk bilangan Bulat). Membangun suatu objek adalah juga jenis konversi sehingga memiliki fungsi sederhana untuk membangun Peta, Daftar, Set:

``jawa impor io.thedocs.soyuz.untuk;

Daftar nama = untuk.daftar("John", "Fedor"); `` Silakan periksa ini - itu memiliki banyak fitur berguna lainnya

Komentar (0)