Belajar Menggunakan LinkedList pada Java


Assalamualaikum Warahmatullahi Wabarakatuh.

Pada bahasa pemrograman Java, LinkList merupakan sebuah collection yang digunakan sebagai tempat penyimpanan data yang terdiri dari node-node (simpul-simpul) yang saling terhubung. Setiap element dihubungkan dengan element lain menggunakan sebuah Pointer, Pointer (penunjuk) adalah sebuah variabel yang digunakan sebagai penunjuk alamat dari variabel lain. Dalam Java, LinkedList mewarisi AbstractSequentialList serta mengimplementasi interface List dan Deque.

Belajar Menggunakan LinkedList pada Java

LinkedList pada Java, digunakan untuk strukturisasi data, fungsinya hampir sama dengan ArrayList. Yang membedakannya adalah terletak pada cara menyimpan serta memaintain suatu objek. Jika pada ArrayList, lebih fokus ke dalam aspek , menyimpan ,dan mengakses. Di LinkedList, lebih fokus ke dalam aspek , memanipulasi data, seperti insert dan delete.

Materi Lainnya Yang Direkomendasikan:

Jika kalian masih bingung, akan saya ilustrasikan sedikit mengenai LinkList, LinkList dapat diilustrasikan seperti kereta api, dimana kereta api terdiri dari gerbong-gerbong yang saling terhubung yang dapat mengangkut penumpang (Data). Gerbong (Node/Simpul) disini berfungsi untuk menyimpan data.

Misalnya jika kita menyimpan data 89, 12, 40 dan 24 dalam Array, contoh gambar konsep dari Single LinkedList seperti berikut ini:

Contoh gambar dari Konsep Single LingkedList pada Java

Setiap Node pada LinkedList mempunyai field yang berisi Pointer yang menghubungkan ke node berikutnya dan juga memiliki field yang berisi Data.

Akhir dari LinkedList ditandai dengan Node terakhir akan menunjuk ke Null yang akan digunakan sebagai kondisi berhenti pada LingkedList.

Selain Single LinkedList, pada umumnya terdapat 3 jenis LinkedList yaitu, Single LinkedList, Double LinkedList, dan Circular LinkedList:

Double LinkedList:

LinkedList dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu: 1 field pointer yang menunjuk ke pointer berikutnya, 1 field pointer yang menunjuk ke pointer sebelumnya dan field yang berisi data dari node tersebut.

Pointer next dan prev-nya menunjuk ke null.

Single Circular LinkedList:

Single LinkedList yang pointer next-nya menunjuk ke dirinya sendiri, jika terdiri dari beberapa node maka pointer terakhirnya akan menunjuk ke pointer terdepannya.

Double Circular LinkedList:

Double LinkedList yang pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.

Contoh 1, Membuat Program Sederhan dengan LinkedList

Pada tutorial kali ini, saya akan mengajarkan pada kalian, bagaimana cara menggunakan LinkedList pada Java, disini kita akan membuat program sederhana, dengan menggunakan LinkedList.

Di dalam program tersebut, kita akan membuat sebuah objek dari LinkedList, dimana pada objek tersebut akan kita tambahkan beberapa data, untuk kita manipulasi. Contoh source codenya seperti berikut ini:

package WILDAN_TECHNO_ART;

import java.util.LinkedList;

public class latihan_java {
    
    public static void main(String[] args){
        //Membuat Instance/Objek dari LinkedList
        LinkedList<String> buah = new LinkedList<>();
        
        //Menambahkan Data pada Objek buah
        buah.add("Jeruk");
        buah.add("Jambu");
        buah.add("Apel");
        buah.add("Melon");
        buah.add("Semangka");
        buah.add("Nanas");
        buah.add("Sirsak");
        
        //Mencetak/Menampilkan Data
        System.out.println("Nama Buah: "+buah);
        
        //Menghitung Jumlah/Ukuran pada Objek LinkedList
        System.out.println("Jumlah Buah: "+buah.size());
    }
}

Demo:

Contoh sederhana penggunaan LinkedList pada Java

Untuk menambahkan data pada Objek buah, kita menggunakan fungsi add(), lalu menampilkan nilainya pada statement System.out.println(), dan untuk melihat ukuran atau jumlah data yang terdapat pada Objek buah, kita bisa menggunakan fungsi size().

Contoh 2, Menambahkan Element pada Objek LinkedList

Pada contoh program berikut ini, kita dapat menambahkan data pada urutan nomor index paling atas dan paling bawan, dengan menggunakan fungsi addFirst() dan addLast(), serta kita juga dapat menambahkan dan mengubah data berdasarkan nomor index tertentu, menggunakan fungsi set(). Seperti berikut ini:

buah.addFirst("Paling Atas");//Menambahkan Data pada Index Teratas 
buah.addLast("Paling Bawah");//Menambahkan Data pada Index Tebawah
        
buah.set(2, "Diubah");// Mengubah Data pada No Index 2
buah.set(5, "Diubah");// Mengubah Data pada No Index 5
        
//Mencetak/Menampilkan Data
System.out.println("Nama Buah: "+buah);

Demo:

Mengubah data pada Objek LingkedList

Pada program tersebut, kita menambahkan data pada index paling atas dan paling bawah, serta mengubah data Jambu (No Index 2) dan Semangka (No Index 5), menggunakan fungsi set().

Contoh 3 Mengambil Element pada LinkedList

Selain menambahkan data sesuai dengan no index tertentu, kita juga dapat mengambil element atau data pada urutan pertama dan terakhir, menggunakan getFirst() dan getLast(), serta mengambil data sesuai dengan no index tertentu, menggunakan fungsi get(), seperti berikut ini:

//Menambahkan Data pada Objek buah
buah.add("Jeruk"); //No Index 0
buah.add("Jambu"); //No Index 1
buah.add("Apel"); //No Index 2
buah.add("Melon"); //No Index 3
buah.add("Semangka"); //No Index 4
        
//Mengambil Data pada Urutan Teratas
System.out.println("Data Teratas: "+buah.getFirst());
//Mengambil Data pada Urutan Terbawah
System.out.println("Data Terbawah: "+buah.getLast());
//Mengambil Data pada Nomor Index 1
System.out.println("Data NoIndex 1: "+buah.get(1)); 
//Mengambil Data pada Nomor Index 3
System.out.println("Data NoIndex 3: "+buah.get(3)); 

Demo:

Mengambil data pada LingkedList

Contoh 4, Menghapus Element pada LinkedList

Selain menambahkan dan mengambil data, pada LingkedList, kita juga dapat menghapus data pada urutan paling atas dan bawah, menggunakan fungsi removeFirs() dan removeLast(), atau sesuai dengan no index tertentu, menggunkan fungsi remove():

//Menambahkan Data pada Objek buah
buah.add("Jeruk");
buah.add("Jambu");
buah.add("Apel");
buah.add("Melon");
        
buah.removeFirst(); //Menghapus Data pada Urutan Paling Atas
buah.removeLast(); //Menghapus Data pada Urutan Paling Bawah
buah.remove(1); //Menghapus Data pada No Index 1
        
//Mencetak Data
System.out.println(buah);

Demo:

Menghapus Data pada Objek LinkedList

Contoh 5, Mecek Kondisi Element pada LinkedList

Terakhir, ada beberapa fungsi lainnya yang bisa kalian gunakan untuk mengecek sebuah element, apakah ada atau tidak, dengan menggunakan fungsi isEmpty() dan contains(), seperti berikut ini:

public static void main(String[] args){
        //Membuat Instance/Objek dari LinkedList
        LinkedList<String> barang = new LinkedList<>();
        
        //Menambahkan Data pada Objek buah
        barang.add("Laptop");
        barang.add("Komputer");
        barang.add("Radio");
        
        //Mengecek Apakah Data pada Objek barang, Kosong
        if(barang.isEmpty()){
            System.out.println("Data Kosong");
        }else{
            System.out.println("Data Penuh");
        }
        
        //Mengecek Apakah Sebuah Element ada Didalam LingkedList
        if(barang.contains("Komputer")){
            System.out.println("Barang Ditemukan");
        }else{
            System.out.println("Barang Tidak Ditemukan");
        }
    }

Demo:

Mengecek Elament yang terdapat pada LinkedList

Terimakasih atas kunjungannya, semoga meteri yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.