Java LinkedList: Panduan Lengkap dengan Contoh
Java LinkedList Temukan cara memanfaatkan LinkedList Java untuk manipulasi data yang efisien, lengkap dengan contoh kode praktis dan wawasan praktik terbaik.
Kelas LinkedList dalam Java Collections Framework mengimplementasikan daftar berambilan ganda. Setiap elemen, atau node , memiliki tiga bidang:
prev – referensi ke node sebelumnya (null untuk elemen pertama) next – referensi ke node berikutnya (null untuk elemen terakhir) data – nilai sebenarnya yang disimpan dalam node Membuat Java LinkedList Buat instance LinkedList dengan tipe elemen tertentu:
LinkedList<Type> list = new LinkedList<>(); Contoh:
// Integer list LinkedList<Integer> numbers = new LinkedList<>(); // String list LinkedList<String> words = new LinkedList<>(); Contoh: Membuat LinkedList di Java import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> animals = new LinkedList<>(); animals.add("Dog"); animals.add("Cat"); animals.add("Cow"); System.out.println("LinkedList: " + animals); } } Output
LinkedList: [Dog, Cat, Cow] Kode ini menunjukkan LinkedList dasar bernama animals yang diisi dengan tiga elemen melalui add().
Cara Kerja Java LinkedList Berbeda dengan array, node tersebar dalam memori dan saling terhubung. Diagram di bawah ini menggambarkan tiga node dan koneksinya.
Dog – node pertama, prev = null, next = Cat Cat – node tengah, prev = Dog, next = Cow Cow – node terakhir, prev = Cat, next = null Untuk wawasan lebih dalam, lihat artikel Linked List .
Metode Utama LinkedList Berikut adalah operasi yang paling sering digunakan:
Menambahkan elemen Mengakses elemen Memperbarui elemen Menghapus elemen 1. Menambahkan Elemen Gunakan add() untuk menambahkan node, secara opsional dengan menentukan indeks:
import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> animals = new LinkedList<>(); animals.add("Dog"); animals.add("Cat"); animals.add("Cow"); System.out.println("LinkedList: " + animals); animals.add(1, "Horse"); System.out.println("Updated LinkedList: " + animals); } } Output
LinkedList: [Dog, Cat, Cow] Updated LinkedList: [Dog, Horse, Cat, Cow] add() kedua menyisipkan "Horse" pada indeks 1, menggeser elemen berikutnya.
2. Mengakses Elemen Ambil item berdasarkan indeks dengan get():
import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> languages = new LinkedList<>(); languages.add("Python"); languages.add("Java"); languages.add("JavaScript"); System.out.println("LinkedList: " + languages); String str = languages.get(1); System.out.print("Element at index 1: " + str); } } Output
LinkedList: [Python, Java, JavaScript] Element at index 1: Java Iterasi juga dapat dilakukan melalui iterator() atau listIterator() untuk penelusuran lanjutan.
3. Memperbarui Elemen Ganti elemen pada indeks tertentu menggunakan set():
import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> languages = new LinkedList<>(); languages.add("Java"); languages.add("Python"); languages.add("JavaScript"); languages.add("Java"); System.out.println("LinkedList: " + languages); languages.set(3, "Kotlin"); System.out.println("Updated LinkedList: " + languages); } } Output
LinkedList: [Java, Python, JavaScript, Java] Updated LinkedList: [Java, Python, JavaScript, Kotlin] 4. Menghapus Elemen Hapus elemen berdasarkan indeks dengan remove():
import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> languages = new LinkedList<>(); languages.add("Java"); languages.add("Python"); languages.add("JavaScript"); languages.add("Kotlin"); System.out.println("LinkedList: " + languages); String removed = languages.remove(1); System.out.println("Removed Element: " + removed); System.out.println("Updated LinkedList: " + languages); } } Output
LinkedList: [Java, Python, JavaScript, Kotlin] Removed Element: Python New LinkedList: [Java, JavaScript, Kotlin] Metode Lainnya yang Berguna Metode Deskripsi contains()Memeriksa apakah nilai ada indexOf()Indeks kemunculan pertama lastIndexOf()Indeks kemunculan terakhir clear()Menghapus semua elemen iterator()Menyediakan Iterator
LinkedList sebagai Queue dan Deque Karena LinkedList mengimplementasikan Queue dan Deque, ia mendukung operasi FIFO dan LIFO. Metode umum meliputi:
Metode Deskripsi addFirst()Tambah di head addLast()Tambah di tail getFirst()Lihat head getLast()Lihat tail removeFirst()Pop head removeLast()Pop tail peek()Lihat head tanpa menghapus poll()Ambil & hapus head offer()Enqueue di tail
Contoh: LinkedList sebagai Queue import java.util.LinkedList; import java.util.Queue; class Main { public static void main(String[] args){ Queue<String> languages = new LinkedList<>(); languages.add("Python"); languages.add("Java"); languages.add("C"); System.out.println("LinkedList: " + languages); String first = languages.peek(); System.out.println("Accessed Element: " + first); String removed = languages.poll(); System.out.println("Removed Element: " + removed); System.out.println("LinkedList after poll(): " + languages); languages.offer("Swift"); System.out.println("LinkedList after offer(): " + languages); } } Output
LinkedList: [Python, Java, C] Accessed Element: Python Removed Element: Python LinkedList after poll(): [Java, C] LinkedList after offer(): [Java, C, Swift] Contoh: LinkedList sebagai Deque import java.util.LinkedList; import java.util.Deque; class Main { public static void main(String[] args){ Deque<String> animals = new LinkedList<>(); animals.add("Cow"); System.out.println("LinkedList: " + animals); animals.addFirst("Dog"); System.out.println("LinkedList after addFirst(): " + animals); animals.addLast("Zebra"); System.out.println("LinkedList after addLast(): " + animals); animals.removeFirst(); System.out.println("LinkedList after removeFirst(): " + animals); animals.removeLast(); System.out.println("LinkedList after removeLast(): " + animals); } } Output
LinkedList: [Cow] LinkedList after addFirst(): [Dog, Cow] LinkedList after addLast(): [Dog, Cow, Zebra] LinkedList after removeFirst(): [Cow, Zebra] LinkedList after removeLast(): [Cow] Melakukan Iterasi pada LinkedList Loop for yang ditingkatkan menawarkan cara ringkas untuk menelusuri elemen:
import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> animals = new LinkedList<>(); animals.add("Cow"); animals.add("Cat"); animals.add("Dog"); System.out.println("LinkedList: " + animals); System.out.println("Accessing linked list elements:"); for(String animal: animals){ System.out.print(animal + ", "); } } } Output
LinkedList: [Cow, Cat, Dog] Accessing linked list elements: Cow, Cat, Dog, LinkedList vs. ArrayList Kedua kelas mengimplementasikan List, namun berbeda dalam karakteristik performa:
LinkedList ArrayList Implements List, Queue, Deque Implements List Node stores prev , data , next Single element per array slot Doubly‑linked structure Resizable array Insertions/ deletions are O(1) when position known Insertions after an index require shifting O(n) Random access requires traversal O(n) Direct index access O(1)
Catatan : Anda dapat membuat instance LinkedList melalui salah satu antarmukanya:
// via List List<String> animals1 = new LinkedList<>(); // via Queue Queue<String> animals2 = new LinkedList<>(); // via Deque Deque<String> animals3 = new LinkedList<>(); Saat menggunakan referensi antarmuka, hanya metode yang didefinisikan oleh antarmuka tersebut yang tersedia.