JavaRush /Java Blog /Random-ID /Rehat kopi #129. Apa perbedaan antara LinkedList dan Arra...

Rehat kopi #129. Apa perbedaan antara LinkedList dan ArrayList? Fitur baru hadir di Java 19

Dipublikasikan di grup Random-ID

Apa perbedaan antara LinkedList dan ArrayList?

Sumber: Rrtutors.com Jika Anda baru mengenal pemrograman Java, Anda pasti bertanya-tanya mana yang lebih baik digunakan saat bekerja dengan koleksi: LinkedList atau ArrayList. Kedua kelas ini menjalankan fungsi yang serupa, sehingga terkadang sulit untuk memutuskan mana yang lebih baik untuk digunakan dalam pekerjaan Anda. Dalam postingan ini, kita akan menjelaskan perbedaan antara kedua kelas dan mendiskusikan di mana dan kapan menggunakannya. Rehat kopi #129.  Apa perbedaan antara LinkedList dan ArrayList?  Fitur baru hadir di Java 19 - 1

Perbedaan antara ArrayList dan LinkedList di Java

Mari kita bandingkan ArrayList dan LinkedList berdasarkan kriterianya:

Manipulasi

Dalam kedua kasus tersebut terdapat perbedaan dalam kecepatan manipulasi array. ArrayList lebih lambat dalam memanipulasi array dibandingkan LinkedList. Hal ini disebabkan fakta bahwa LinkedList berbasis node dan tidak memerlukan banyak pergeseran bit.

Mengakses

ArrayList menyimpan dan mengambil data lebih cepat. Di sisi lain, LinkedList mendukung pemrosesan data yang lebih cepat.

Penerapan

ArrayList hanya mengimplementasikan daftar, sedangkan LinkedList mengimplementasikan daftar dan antrian. LinkedList juga sering digunakan sebagai antrian.

Implementasi internal

ArrayList menyimpan elemen-elemennya dalam array dinamis, sedangkan LinkedList menggunakan daftar tertaut ganda.

Kapan menggunakan ArrayList dan LinkedList?

ArrayList cocok untuk bekerja dengan koleksi read-only, sedangkan LinkedList cocok untuk bekerja dengan koleksi yang memungkinkan berbagai modifikasi data, seperti menambah dan menghapus.

Contoh Daftar Tertaut:

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 Daftar Array:

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: Fitur baru hadir di Java 19

Sumber: InfoWorld Thread virtual, pencocokan pola untuk pernyataan switch, API vektor, dan port Linux/RISC-V semuanya akan hadir pada bulan September ini di Java 19, rilis baru bahasa tersebut dengan dukungan jangka pendek. Selain itu, Java Development Kit 19 baru-baru ini memperkenalkan fitur lain: pratinjau pola Rekam untuk navigasi dan pemrosesan data. Sebagai bagian dari rencana berkelanjutan untuk meningkatkan bahasa Java, JDK 19, atau hanya Java 19, berpotensi memuat sejumlah besar fitur, mulai dari fitur generik hingga objek nilai. JDK 19 akan menjadi pembaruan berikutnya setelah JDK 18 yang diperkenalkan pada 22 Maret 2022. Versi standar Java dirilis setiap enam bulan. Pengembang OpenJDK telah mempublikasikan jadwal rilis resmi untuk JDK 19. Menurutnya, rilis stabil akan muncul pada 20 September. Sebelumnya, pengembang dapat membiasakan diri dengan versi awal, yang akan dirilis pada 9 Juni dan 21 Juli. Kandidat rilis akan dipublikasikan pada 11 Agustus dan 25 Agustus. Akses awal build JDK 19 tersedia di jdk.java.net/19 . Fitur-fitur yang ditawarkan pada JDK 19 antara lain:
  • Pratinjau templat rekaman untuk mengurai nilai rekaman. Templat rekaman dan templat tipe dapat disarangkan untuk menyediakan bentuk navigasi dan pemrosesan data yang deklaratif, kuat, dan dapat disusun. Ide di balik fitur ini adalah untuk menambahkan ekstensi pencocokan pola untuk mengekspresikan kueri data gabungan yang lebih kompleks tanpa mengubah sintaksis atau semantik pola tipe. Proposal ini didasarkan pada pencocokan pola misalnya yang diperkenalkan di JDK 16 pada Maret 2021. Selanjutnya, rencana masa depan mungkin memerlukan perluasan templat rekaman dengan fitur seperti templat array dan templat vararg. Entri templat adalah bagian dari Proyek Amber , yang bertujuan untuk mengeksplorasi dan mengembangkan fitur-fitur Java kecil yang berorientasi pada kinerja.

  • Pratinjau Fungsi Alien dan API Memori . Ini akan memperkenalkan API yang memungkinkan program Java berinteraksi dengan kode dan data di luar runtime Java.

    Dengan memanggil fungsi eksternal secara efisien (kode di luar runtime Java) dan mengakses memori eksternal dengan aman (memori tidak dikelola oleh JVM), API akan memungkinkan program Java memanggil pustaka asli dan memproses data asli tanpa ancaman apa pun terhadap Java Native Interface (JNI). ).

  • Pratinjau thread virtual . Penawaran ini memperkenalkan thread ringan yang sangat mengurangi upaya penulisan, pemeliharaan, dan pemantauan aplikasi paralel berkinerja tinggi. Ide dari proposal ini adalah untuk menyediakan kemampuan untuk menskalakan aplikasi server yang ditulis dalam gaya thread-per-request sederhana dengan penggunaan perangkat keras yang optimal. Ini akan memungkinkan Anda untuk mengimplementasikan thread virtual ke dalam kode yang menggunakan java.langThread API dengan sedikit perubahan, dan memungkinkan Anda memecahkan masalah, men-debug, dan membuat profil thread virtual menggunakan alat JDK yang ada.

  • Pratinjau ketiga pencocokan pola untuk ekspresi dan pernyataan peralihan. Ini memperluas pencocokan pola untuk beralih guna memungkinkan ekspresi diuji terhadap sejumlah pola, yang masing-masing memiliki tindakan spesifik. Hal ini memungkinkan kueri kompleks yang berpusat pada data diungkapkan secara ringkas dan aman. Fitur ini sebelumnya telah dipratinjau di JDK 17 dan JDK 18. Pratinjau ketiga akan menambahkan peningkatan, termasuk mengganti pola yang dilindungi ketika dengan klausa di blok sakelar. Ide dari proposal ini adalah untuk memperluas ekspresi dan penerapan ekspresi dan operator saklar.

  • Inkubasi keempat dari API vektor akan mengekspresikan komputasi vektor yang dapat dikompilasi secara andal saat runtime menjadi instruksi vektor yang optimal pada arsitektur prosesor yang didukung. Ini akan memberikan kinerja yang lebih baik dibandingkan perhitungan skalar yang setara. Pengembang yang menggunakan API baru akan dapat menulis algoritma vektor kompleks di Java menggunakan autovectorizer HotSpot, namun dengan model khusus yang membuat vektorisasi lebih dapat diprediksi dan diandalkan. Vector API sebelumnya diinkubasi di JDK 16, JDK 17, dan JDK 19.

    Sebagai tambahan lain pada API vektor, operasi jalur integral bitwise akan diperluas untuk mencakup operasi seperti penghitungan jumlah satu bit, membalikkan urutan bit, serta kompresi dan perluasan bit.

  • Dengan port Linux/RISC-V , Java akan mendapatkan dukungan set instruksi perangkat keras yang sudah didukung oleh berbagai perangkat bahasa. RISC-V adalah keluarga ISA terkait. Port Linux/RISC-V hanya akan mendukung konfigurasi RV64GV RISC-V, ISA tujuan umum 64-bit yang mencakup instruksi vektor.

    Port ini akan mendukung opsi mesin virtual HotSpot berikut: penerjemah templat, kompiler JIT C1 (klien), kompiler JIT C2 (server), dan semua pengumpul sampah utama saat ini, termasuk ZGC dan Shenandoah.

Seperti JDK 18, JDK 19 akan menjadi rilis jangka pendek dengan dukungan enam bulan. Rilis sebelumnya, JDK 17, merupakan rilis LTS dengan jaminan dukungan selama beberapa tahun. Itu diperkenalkan pada 14 September 2021.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION