Pengertian Dasar Linked List
Struktur Data berikut adalah Linked List. Linked List adalah strukut data linier seperti Array. Tidak seperti Array, Linked List memiliki elemen yang tidak disimpan di lokasi yang berdekatan. elemen-lemen pada Linked List berdekatan dengan pointer.
Linked List dalam Java
Linked List diterapkan di seluruh bahasa pemrograman, ta terkecuali Java. Linked List dalam Java adalah bagian framework collection yang berada dalam java.util packages. class Java Linked List menggunakan Linked List ganda (doubly linked list) untuk menyimpan elemen-elemen. Tersedia dalam Linked List, juga mewarisi (inhertiance) AbstractList class dan mengimplementasikann antar muka List dan Deque.
Poin-poin penting dalam Java Linked List:
classJava Linked List dapat berisikan elemen-elemen yang di duplikasikanclassJava Linked List dapat berisikan untuk mempertahankan urutan penyisipanclassJava Linked List tidak dapat di sinkronisasikanclassJava Linked List memiliki manipulasi yang cepat, hal itu menyebabkan tidak perlu terjadi pergeseranclassJava Linked List bisa digunakan sebagai List, Stack, dan Queue
Bagaimana Linked List bekerja secara internal?
Karena Linked List adalah array dinamis, kita tidak perlu mendeklarasikan besarnya ukuran tersebut, ukuran list secara otomatis bertambah saat kita menambahkan dan menghapus item secara dinamis. Dan juga, elemen-elemen tidak disimpan secara terus menerus. Oleh karena itu tidak diperlukan untuk menambahkan ukuran list dari Linked List tersebut. Secara internal, Linked List di Java diimplementasikan menggunakan struktur data Linked List Ganda (Double Linked List). Kami menyarankan anda memahami teerlebih dulu struktur data Linked List secara umum disini
pendeklarasian
classLinkedList
berikut adaslah contoh pendeklarasian java.util.LinkedList; class
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
Constructorsdi Java Linked List
| Constructors | Penjelasan |
|---|---|
LinkedList() |
digunakan untuk membuat daftar kosong (null list) |
LinkedList(Collection<? extends E> c) |
digunakan untuk membuat list yang berisi elemen-elemen dari koleksi yang ditentukan, di dalam urutan tersebut, dikembalikan oleh iterator koleksi |
Methodsdalam Java Linked List
| Methods | Penjelasan |
|---|---|
boolean add(E e) |
digunakan untuk menambahkan elemen yang ditentukan ke akhir list |
void add(int index, E element) |
digunakan untuk menyisipkan elemen tertentu pada indeks posisi yang ditentukan dalam list |
boolean addAll(Collection<? extends E> c) |
digunakan untuk menambahkan semua elemen dalam koleksi yang ditentukan ke akhir list, di dalam urutan yang dikembalikan oleh iterator koleksi yang ditentukan |
boolean addAll(Collection<? extends E> c) |
digunakan untuk menambahkan semua elemen-elemen ke dalam koleksi yang ditentukan ke akhir list, di dalam urutan dikembalikan oleh iterator koleksi yang ditentukan |
boolean addAll(int index, Collection<? extends E> c) |
digunakan untuk menambahkan semua elemen-elemen ke koleksi yang ditentukan, dimulai di posisi list yang ditentukan |
void addFirst(E e) |
digunakan untuk menyisipkan pemberian elemen di awal list |
void addLast(E e) |
digunakan untuk menambahkan pemberian elemen di akhir list |
void clear() |
digunakan untuk menghapus semua elemen dari list tersebut |
Object clone() |
digunakan untuk mengembalikan salinan dangkal dari Array List |
boolean contains(Object o) |
digunakan untuk mengembalikan nilai true jika list berisikan elemen yang ditentukan |
Iterator<E> descendingIterator() |
digunakan untuk mengembalikan iterator di atas elemen-elemen dalam deque dalam urutan sequnetial |
E element() |
digunakan untuk mengambil elemen pertama pada list |
E get(int index) |
digunakan untuk mengembalikan elemen di dalam posisi list yang telah ditentukan |
E getFirst() |
digunakan untuk mengembalikan elemen pertama pada list |
E getLast() |
digunakan untuk mengembalikan elemen terakhir pada list |
intIndexOf(Object o) |
digunakan untuk mengembalikan indeks list kemunculan terakhir dari elemen yang ditentukan, atau -1 jika list tidak berisikan elemen apapun |
ListIterator<E> listIterator(int index) |
digunakan untuk mengembalikan elemen list-iterator ke dalam urutan yang benar, mulai dari posisi yang ditentukan dalam list |
boolean offer(E e) |
menambahkan elemen yang ditentukan sebagai elemen terakhir dari list |
boolean offerFirst(E e) |
menyisipkan elemen elemen yang ditentukan di bagian depan list |
boolean offerLast(E e) |
menyisipkan elemen elemen yang ditentukan di bagian belakang list |
E peek() |
mengambil elemen pertama dalam list |
E peekFirst() |
mengambil elemen pertama dalam dari list atau mengembalikan nilai nol (null) jika list tersebut kosong |
E peekLast() |
mengambil elemen terakhir dalam dari list atau mengembalikan nilai nol (null) jika list tersebut kosong |
E poll() |
mengambil dan menghapus elemen pertama dalam list |
E pollFirst() |
mengambil dan menghapus elemen pertama dalam list atau mengembalikan nilai nol (null) jika list tersebut kosong |
E pollLast() |
mengambil dan menghapus elemen terakhir dalam list atau mengembalikan nilai nol (null) jika list tersebut kosong |
pop() |
memunculkan elemen dari Stack yang diwakili oleh list |
void push(E e) |
mendorong elemen ke Stack yang diwakili oleh list |
E remove() |
digunakan untuk menghapus atau mengembalikan elemen pertama dalam list |
E removeFirst() |
menghapus dan mengembalikan elemen pertama dari list |
E removeLast() |
menghapus dan mengembalikan elemen terakhir dari list |
E remove(int index) |
digunakan untuk menghapus elemen di posisi tertentu dalam list |
boolean remove(Object o) |
digunakan untuk menghapus kemunculan pertama dari elemen yang ditentukan dalam list |
boolean removeFirstOccurrence(Object o) |
digunakan untuk menghapus kemunculan pertama dari elemen yang ditentukan dalam list (digunakan saat melintasi daftar dari kepala ke ekor) |
boolean removeLastOccurrence(Object o) |
digunakan untuk menghapus kemunculan terakhir dari elemen yang ditentukan dalam list (digunakan saat melintasi daftar dari kepala ke ekor) |
E set(int index, E element) |
digunakan untuk menggantikan elemen di posisi yang ditentukan dalam list dengan elemen yang ditentukan |
Object[] toArray() |
digunakan untuk mengembalikan array yang berisi semua elemen dalam list dan di dalam urutan yang benar(dari elemen pertama hingga terakhir) |
<T> T[] toArray(T[] a) |
digunakan untuk mengembalikan array yang berisi semua elemen dalam urutan yang tepat (dari elemen pertama hingga terakhir); tipe runtime dari array yang dikembalikan adalah array yang ditentukan |
int size() |
digunakan untuk mengembalikan nomor elemen yang berada di dalam list |
Contoh Java Linked List
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
// mendeklarasikan variabel untuk Linked List, di bawah ini berbentuk String
LinkedList<String> str = new LinkedList<String>();
// mengisi bagian-bagian Linked List yang di deklarasikan tadi
str.add("Satu");
str.add("Dua");
str.add("Tiga");
str.add("Empat");
str.add("Lima");
// mendeklarasikan method iterator melalui variabel Iterator. Iterator sendiri digunakan sebagai perulangan, disini perulangan akan menggunakabn variabel dari Linked List
Iterator<String> itr = str.iterator();
// dari variabel Iterator, diterapkan perulangan while
while(itr.hasNext()) {
// mebncetak output
System.out.println(Itr.next());
}
}
}Output:
Satu
Dua
Tiga
Empat
Lima
Contoh Java Linked List menambahkan elemen ke
list
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> lst = new LinkedList<String>();
System.out.println("Awal elemen list: " + lst);
lst.add("Satu");
lst.add("Dua");
lst.add("Tiga");
System.out.println("Setelah memanggil method add(E e) : " + lst);
// menambahkan sebuah elemen pada posisi terentu
// seperti dibahas di awal, semua elemen dalam list ini meiliki artian sama seperti array
lst.add(2, "Empat");
System.out.println("Setelah memanggil method add(int index, E element) : " + lst);
LinkedList<String> arr = new LinkedList<String>();
arr.add("Lima");
arr.add("Enam");
lst.addAll(arr);
System.out.println("Setelah menambahkan method addAll(Collection<? extends E> c) : " + lst);
LinkedList<String> num = new LinkedList<String>();
num.add("Tujuh");
num.add("Delapan");
lst.addAll(5, num);
System.out.println("Setelah menambahkan method addAll(int index, Collection<? extends E> c) : " + lst);
lst.addFirst("Nol");
System.out.println("Setelah menambahkan method addFirst(E e) : " + lst);
lst.addLast("Sembilan");
System.out.println("Setelah menambahkan method addLast(E e) : " + lst);
}
}Contoh Java Linked List untuk menghapus elemen
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> lst = new LinkedList<String>();
lst.add("Satu");
lst.add("Dua");
lst.add("Tiga");
lst.add("Empat");
lst.add("Lima");
lst.add("Enam");
lst.add("Tujuh");
lst.add("Delapan");
lst.add("Sembilan");
lst.add("Sepuluh");
System.out.println("Elemen list awal : " + lst);
// menghapus elemen yang ditentukan di Array List
lst.remove("Sepuluh");
System.out.println("Setelah menambahkan method remove(object) : " + lst);
// menghapus elemen dalam basis yang ditentukan
lst.remove(8);
System.out.println("Setelah menambahkan method remove(index) : " + lst);
// medeklarasikan Linked List baru dengan sebuah variabel
LinkedList<String> arr = new LinkedList<String>();
arr.add("Sembilan");
arr.add("Sepuluh");
// menambahkan elemen baru ke ArrayList
lst.addAll(arr);
System.out.println("List Terbaru setelah menambahkan method addAll(Collection<? extends E> c) : " + lst);
// menghapus semua elemen baru dalam Linked List
lst.removeAll(arr);
System.out.println("Setelah menambahkan method removeAll() : " + lst);
// menghapus elemen pertama dalam list
lst.removeFirst();
System.out.println("Setelah menambahkan method removeFirst() : " + lst);
// menghapus elemen akhir dalam list
lst.removeLast();
System.out.println("Setelah menambahkan method removeLast() : " + lst);
// menghapus elemen kejadian pertama dari list
lst.removeFirstOccurrence("Dua");
System.out.println("Setelah menambahkan method removeFirstOccurrence() : " + lst);
// menghapus elemen kejadian akhir dari list
lst.removeLastOccurrence("Tujuh");
System.out.println("Setelah menambahkan method removeLastOccurrence() : " + lst);
// menghapus semua elemen dari list
lst.clear();
System.out.println("Setelah menambahkan method clear() : " + lst);
}
}Output:
Elemen list awal : [Satu, Dua, Tiga, Empat, Lima, Enam, Tujuh, Delapan, Sembilan, Sepuluh]
Setelah menambahkan method remove(object) : [Satu, Dua, Tiga, Empat, Lima, Enam, Tujuh, Delapan, Sembilan]
Setelah menambahkan method remove(index) : [Satu, Dua, Tiga, Empat, Lima, Enam, Tujuh, Delapan]
List Terbaru setelah menambahkan method addAll(Collection<? extends E> c) : [Satu, Dua, Tiga, Empat, Lima, Enam, Tujuh, Delapan, Sembilan, Sepuluh]
Setelah menambahkan method removeAll() : [Satu, Dua, Tiga, Empat, Lima, Enam, Tujuh, Delapan]
Setelah menambahkan method removeFirst() : [Dua, Tiga, Empat, Lima, Enam, Tujuh, Delapan]
Setelah menambahkan method removeLast() : [Dua, Tiga, Empat, Lima, Enam, Tujuh]
Setelah menambahkan method removeFirstOccurrence() : [Tiga, Empat, Lima, Enam, Tujuh]
Setelah menambahkan method removeLastOccurrence() : [Tiga, Empat, Lima, Enam]
Setelah menambahkan method clear() : []
Contoh Java Linked List untuk membalikkan elemen
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
// mendeklarasikan Linked List baru
LinkedList<String> brr = new LinkedList<String>();
brr.add("Satu");
brr.add("Dua");
brr.add("Tiga");
// mengubah elemen dalam list dengan urutan yang terbalik
Iterator i = brr.descendingIterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
}Baik, itu saja dokumentasi penjelasan mengenai Linked List, selanjutnya kamu dapa mencoba program diatas, atau kamu bisa langsung mencobanya disini
