JavaRush /Blog Java /Random-MS /Coffee break #129. Apakah perbezaan antara LinkedList dan...

Coffee break #129. Apakah perbezaan antara LinkedList dan ArrayList? Ciri baharu datang dalam Java 19

Diterbitkan dalam kumpulan

Apakah perbezaan antara LinkedList dan ArrayList?

Sumber: Rrtutors.com Jika anda baru dalam pengaturcaraan Java, anda mesti tertanya-tanya yang mana lebih baik untuk digunakan semasa bekerja dengan koleksi: LinkedList atau ArrayList. Kedua-dua kelas ini melaksanakan fungsi yang serupa, jadi kadangkala sukar untuk menentukan yang mana satu lebih baik untuk digunakan dalam kerja anda. Dalam siaran ini, kami akan mentakrifkan perbezaan antara kedua-dua kelas dan membincangkan tempat dan masa untuk menggunakannya. Coffee break #129.  Apakah perbezaan antara LinkedList dan ArrayList?  Ciri baharu datang dalam Java 19 - 1

Perbezaan antara ArrayList dan LinkedList dalam Java

Mari bandingkan ArrayList dan LinkedList berdasarkan kriteria mereka:

Manipulasi

Dalam kedua-dua kes terdapat perbezaan dalam kelajuan manipulasi tatasusunan. ArrayList lebih perlahan untuk memanipulasi tatasusunan berbanding LinkedList. Ini disebabkan oleh fakta bahawa LinkedList adalah berasaskan nod dan tidak memerlukan banyak peralihan sedikit.

Akses

ArrayList menyimpan dan mendapatkan semula data dengan lebih cepat. Sebaliknya, LinkedList menyokong pemprosesan data yang lebih pantas.

Perlaksanaan

ArrayList hanya melaksanakan senarai, manakala LinkedList melaksanakan kedua-dua senarai dan baris gilir. LinkedList juga sering digunakan sebagai baris gilir.

Pelaksanaan dalaman

ArrayList menyimpan elemennya dalam tatasusunan dinamik, manakala LinkedList menggunakan senarai dua kali pautan.

Bila hendak menggunakan ArrayList dan LinkedList?

ArrayList sesuai untuk bekerja dengan koleksi baca sahaja, manakala LinkedList sesuai untuk bekerja dengan koleksi yang membenarkan pelbagai pengubahsuaian data, seperti menambah dan memadam.

Contoh LinkedList:

import java.util.LinkedList;

import java.util.List;

public class LinkeddExample {

    public static void main(String[] args) {

        List<String> myGroup=new LinkedList<>();

        myGroup.add("Pohekar");

        myGroup.add("Sumedh");

        myGroup.add("Nikir");

        System.out.println("Create Group: "+myGroup);

        myGroup.remove("Pohekar");

        System.out.println("Remove Group element: "+myGroup);

        myGroup.set(1,"Niha");

        System.out.println("Modify Group: "+myGroup);

    }

}

Contoh ArrayList:

import java.util.ArrayList;

import java.util.List;

public class ArrayListExca {

    public static void main(String[] args) {

        List<String> Pro=new ArrayList<>();

        Pro.add("PythonPro");

        Pro.add("JavaPro");

        Pro.add("C#Pro");



        System.out.println("Traversing ArrayList...");

        for(String s:Pro){

            System.out.println(s);


    }

    }

}

JDK 19: Ciri baharu datang dalam Java 19

Sumber: Benang Maya InfoWorld, padanan corak untuk pernyataan suis, API vektor dan port Linux/RISC-V semuanya akan datang pada September ini di Java 19, keluaran baharu bahasa dengan sokongan jangka pendek . Selain itu, Java Development Kit 19 baru-baru ini memperkenalkan ciri lain: pratonton corak Rekod untuk navigasi dan pemprosesan data. Sebagai sebahagian daripada rancangan berterusan untuk menambah baik bahasa Java, JDK 19, atau ringkasnya Java 19, berpotensi untuk mengandungi sejumlah besar ciri, daripada generik kepada objek bernilai. JDK 19 akan menjadi kemas kini seterusnya selepas JDK 18, yang diperkenalkan pada 22 Mac 2022. Versi standard Java dikeluarkan setiap enam bulan. Pembangun OpenJDK telah menerbitkan jadual keluaran rasmi untuk JDK 19. Menurutnya, keluaran stabil akan muncul pada 20 September. Sebelum ini, pembangun akan dapat membiasakan diri dengan binaan awal, yang akan dikeluarkan pada 9 Jun dan 21 Julai. Calon pelepasan akan diterbitkan pada 11 Ogos dan 25 Ogos. Binaan akses awal JDK 19 tersedia di jdk.java.net/19 . Ciri-ciri yang ditawarkan dalam JDK 19 termasuk:
  • Pratonton templat rekod untuk menghuraikan nilai rekod. Templat rekod dan templat jenis boleh disarangkan untuk menyediakan bentuk navigasi dan pemprosesan data yang deklaratif, berkuasa dan boleh digubah. Idea di sebalik ciri ini adalah untuk menambah sambungan padanan corak untuk menyatakan pertanyaan data kompaun yang lebih kompleks tanpa mengubah sintaks atau semantik corak jenis. Cadangan ini adalah berdasarkan padanan corak misalnya yang diperkenalkan dalam JDK 16 pada Mac 2021. Selanjutnya, rancangan masa depan mungkin memerlukan melanjutkan templat rekod dengan ciri seperti templat tatasusunan dan templat vararg. Kemasukan templat adalah sebahagian daripada Project Amber , yang bertujuan untuk meneroka dan membangunkan ciri Java kecil yang berorientasikan prestasi.

  • Pratonton Fungsi Asing dan API Memori . Ia akan memperkenalkan API yang membolehkan program Java berinteraksi dengan kod dan data di luar masa jalan Java.

    Dengan cekap memanggil fungsi luaran (kod di luar masa jalan Java) dan mengakses memori luaran dengan selamat (memori tidak diurus oleh JVM), API akan membenarkan program Java memanggil perpustakaan asli dan memproses data asli tanpa sebarang ancaman kepada Antara Muka Asli Java (JNI). ).

  • Pratonton benang maya . Tawaran ini memperkenalkan benang ringan yang sangat mengurangkan usaha menulis, menyelenggara dan memantau aplikasi selari berprestasi tinggi. Idea cadangan adalah untuk menyediakan keupayaan untuk menskalakan aplikasi pelayan yang ditulis dalam gaya benang-per-permintaan yang mudah dengan penggunaan perkakasan yang optimum. Ini akan membolehkan anda melaksanakan urutan maya ke dalam kod yang menggunakan API java.langThread dengan perubahan yang minimum dan membolehkan anda menyelesaikan masalah, nyahpepijat dan memprofilkan urutan maya menggunakan alat JDK sedia ada.

  • Pratonton ketiga padanan corak untuk ungkapan dan pernyataan suis. Ia memanjangkan padanan corak untuk bertukar bagi membolehkan ungkapan diuji terhadap beberapa corak, yang setiap satunya mempunyai tindakan tertentu. Ini membolehkan pertanyaan berpusatkan data yang kompleks dinyatakan dengan ringkas dan selamat. Ciri ini telah dipratonton sebelum ini dalam JDK 17 dan JDK 18. Pratonton ketiga akan menambah penambahbaikan, termasuk menggantikan corak yang dilindungi dengan klausa dalam blok suis. Idea cadangan itu adalah untuk mengembangkan ekspresi dan kebolehgunaan ekspresi dan pengendali suis.

  • Inkubasi keempat API vektor akan menyatakan pengiraan vektor yang disusun dengan pasti pada masa jalan ke dalam arahan vektor optimum pada seni bina pemproses yang disokong. Ini akan memberikan prestasi yang lebih baik daripada pengiraan skalar yang setara. Pembangun yang menggunakan API baharu akan dapat menulis algoritma vektor kompleks dalam Java menggunakan autovectorizer HotSpot, tetapi dengan model tersuai yang menjadikan vektorisasi lebih boleh diramal dan boleh dipercayai. Vector API sebelum ini diinkubasi dalam JDK 16, JDK 17 dan JDK 19.

    Sebagai satu lagi tambahan kepada API vektor, operasi seluruh lorong kamian bitwise akan diperluaskan untuk memasukkan operasi seperti mengira bilangan satu bit, susunan bit terbalik dan mampatan dan pengembangan bit.

  • Dengan port Linux/RISC-V , Java akan mendapat sokongan set arahan perkakasan yang sudah disokong oleh pelbagai kit alat bahasa. RISC-V ialah keluarga ISA yang berkaitan. Port Linux/RISC-V hanya akan menyokong konfigurasi RV64GV RISC-V, ISA tujuan umum 64-bit yang merangkumi arahan vektor.

    Port akan menyokong pilihan mesin maya HotSpot berikut: jurubahasa templat, pengkompil JIT C1 (pelanggan), pengkompil JIT C2 (pelayan) dan semua pengumpul sampah utama semasa, termasuk ZGC dan Shenandoah.

Seperti JDK 18, JDK 19 akan menjadi keluaran jangka pendek dengan enam bulan sokongan. Keluaran sebelumnya, JDK 17, adalah keluaran LTS dengan sokongan yang dijamin selama beberapa tahun. Ia diperkenalkan pada 14 September 2021.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION