Selasa, 19 Agustus 2025

JAVA - Array List

 



Hasil :

run:

(1) [Siantar]

(2) [Klaten, Siantar]

(3) [Klaten, Siantar, Balige]

(4) [Klaten, Siantar, Balige, Jogja]

(5) [Klaten, Siantar, Batam, Balige, Jogja]

(6) [Klaten, Siantar, Batam, Balige, Jogja, Mataram]

(7) [Siantar, Batam, Balige, Jogja, Mataram]

(8) [Siantar, Batam, Jogja, Mataram]

(9) [Siantar, Batam, Jogja]

BUILD SUCCESSFUL (total time: 1 second)


File : TestList.java
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testlist;
 public class TestList {
 public static void main(String[] args) {
 // Menciptakan suatu list
 MyList<String> list = new MyArrayList<String>();

 // Menambah elemen-elemen ke list
 list.add("Siantar"); // Menambahnya ke list
 System.out.println("(1) " + list);

 list.add(0, "Klaten"); // Menambahnya pada awal list
 System.out.println("(2) " + list);

 list.add("Balige"); // Menambahnya pada ujung list
 System.out.println("(3) " + list);

 list.add("Jogja"); // Menambahnya pada ujung list
 System.out.println("(4) " + list);

 list.add(2, "Batam"); // Menambahnya ke list pada indeks 2
 System.out.println("(5) " + list);

 list.add(5, "Mataram"); // Menambahnya ke list pada indeks 5
 System.out.println("(6) " + list);

 // Menghapus elemen-elemen dari list
 list.remove("Klaten"); // Sama dengan list.remove(0) 
 System.out.println("(7) " + list);

 list.remove(2); // Menghapus elemen pada indeks 2
 System.out.println("(8) " + list);

 list.remove(list.size() - 1); // Menghapus elemen terakhir
 System.out.println("(9) " + list);
 }
 }
========================================

File : MyArrayList.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testlist;
 public class MyArrayList<E> extends MyAbstractList<E> {
 public static final int KAPASITAS_AWAL = 16;
 private E[] data = (E[]) new Object[KAPASITAS_AWAL];

 /** Menciptakan suatu list default */
 public MyArrayList() {
 }

 /** Menciptakan suatu list dari array objek */
 public MyArrayList(E[] objek) {
 for (int i = 0; i < objek.length; i++)
 add(objek[i]); // Peringatan: jangan gunakan super(objek)!
 }

 /** Menambahkan suatu elemen baru pada indeks tertentu di dalam list */
 public void add(int indeks, E e) {
 ensureCapacity();

 // Memindahkan elemen-elemen ke kanan setelah indeks tertentu
 for (int i = ukuran - 1; i >= indeks; i--)
 data[i + 1] = data[i];

 // Menyisipkan elemen baru ke data[indeks]
 data[indeks] = e;

 // Menambah ukuran sebesar 1
 ukuran++;
 }

 /** Menciptakan suatu array yang lebih besar, menggandakan ukuran sekarang + 1 */
 private void ensureCapacity() {
 if (ukuran >= data.length) {
 E[] dataBaru = (E[])(new Object[ukuran * 2 + 1]);
 System.arraycopy(data, 0, dataBaru, 0, ukuran);
 data = dataBaru;
 }
 }

 /** Membersihkan list */
 public void clear() {
 data = (E[])new Object[KAPASITAS_AWAL];
 ukuran = 0;
 }

 /** Mengembalikan true jika list ini memuat elemen */
 public boolean contains(E e) {
 for (int i = 0; i < ukuran; i++)
 if (e.equals(data[i])) return true;

 return false;
 }

 /** Mengembalikan elemen dari list ini pada indeks tertentu */
 public E get(int indeks) {
 return data[indeks];
 }

 /** Mengembalikan indeks dari elemen cocok pertama di dalam list ini.
   * Mengembalikan -1 jika tidak ada yang cocok. */
 public int indexOf(E e) {
 for (int i = 0; i < ukuran; i++)
 if (e.equals(data[i])) return i;

 return -1;
 }

 /** Mengembalikan indeks dari elemen cocok terakhir di dalam list ini.
   * Mengembalikan -1 jika tidak ada yang cocok. */
 public int lastIndexOf(E e) {
 for (int i = ukuran - 1; i >= 0; i--)
 if (e.equals(data[i])) return i;

 return -1;
 }

 /** Menghapus pada posisi tertentu di dalam list ini
   * Menggeser elemen-elemen ke kiri.
   * Mengembalikan elemen yang dihapus dari list. */
 public E remove(int indeks) {
 E e = data[indeks];

 // Menggeser data ke kiri
 for (int j = indeks; j < ukuran - 1; j++)
 data[j] = data[j + 1];

 data[ukuran - 1] = null; // ELemen ini sekarang null

 // Mendekremen ukuran
 ukuran--;

 return e;
 }

 /** Mengganti elemen pada posisi tertentu di dalam list ini
   * dengan elemen tertentu. */
 public E set(int indeks, E e) {
 E old = data[indeks];
 data[indeks] = e;
 return old;
 }

 /** Mengoverride metode toString() untuk mengembalikan elemen-elemen di dalam list */
 public String toString() {
 StringBuilder hasil = new StringBuilder("[");

 for (int i = 0; i < ukuran; i++) {
 hasil.append(data[i]);
 if (i < ukuran - 1) hasil.append(", ");
 }

 return hasil.toString() + "]";
 }

 /** Memotong kapasitas menjadi ukuran sekarang */
 public void trimToSize() {
 if (ukuran != data.length) {
 // Jika ukuran == kapasitas, tidak diperlukan pemotongan
 E[] newData = (E[])(new Object[ukuran]);
 System.arraycopy(data, 0, newData, 0, ukuran);
 data = newData;
 }
 }
 }

==================================

File : MyAbstractList.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testlist;
 public abstract class MyAbstractList<E> implements MyList<E> {
 protected int ukuran = 0; // Ukuran list

 /** Menciptakan suatu list default */
 protected MyAbstractList() {
 }

 /** Menciptakan suatu list dari suatu array objek */
 protected MyAbstractList(E[] objek) {
 for (int i = 0; i < objek.length; i++)
 add(objek[i]);
 }

 /** Menambah suatu elemen baru di ujung list */
 public void add(E e) {
 add(ukuran, e);
 }

 /** Mengembalikan true jika list ini tidak memuat satupun elemen */
 public boolean isEmpty() {
 return ukuran == 0;
 }

 /** Mengembalikan jumlah elemen di dalam list ini */
 public int size() {
 return ukuran;
 }

 /** Menghapus kemunculan pertama elemen o dari list ini.
   * Menggeser elemen-elemen ke kiri.
   * Mengembalikan true jika elemen dihapus. */
 public boolean remove(E e) {
 if (indexOf(e) >= 0) {
 remove(indexOf(e));
 return true;
 }
 else
 return false;
 }
 }

===========================================

File : MyList.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testlist;
 public interface MyList<E>{
 /** Menambah suatu elemen baru di ujung list ini */
 public void add(E e);

 /** Menambah suatu elemen baru pada indeks tertentu di dalam list ini */
 public void add(int index, E e);

 /** Menghapus list */
 public void clear();

 /** Mengembalikan true jika list ini memuat elemen */
 public boolean contains(E e);

 /** Mengembalikan elemen dari list ini pada indeks tertentu */
 public E get(int index);

 /** Mengembalikan indeks dari elemen cocok pertama di dalam list ini.
   * Mengembalikan -1 jika tidak ada yang cocok. */
 public int indexOf(E e);

 /** Mengembalikan true jika list ini tidak memuat satupun elemen */
 public boolean isEmpty();

 /** Mengembalikan indeks dari elemen cocok terakhir di dalam list ini
   * Mengembalikan -1 jika tidak ada yang cocok. */
 public int lastIndexOf(E e);

 /** Menghapus kemunculan pertama dari elemen o pada lisi ini.
   * Menggeser elemen-elemen ke kiri.
   * Mengembalikan true jika elemen dihapus. */
 public boolean remove(E e);

 /** Menghapus elemen pada posisi tertentu di dalam list ini
   * Menggeser elemen-elemen ke kiri.
   * Mengembalikan elemen yang dihapus dari list ini. */
 public E remove(int index);

 /** Mengganti elemen pada posisi tertentu di dalam list ini
   * dengan elemen tertentu dan mengembalikan set yang baru. */
 public Object set(int index, E e);

 /** Mengembalikan jumlah elemen di dalam list ini */
 public int size();
 }
=============================


Tidak ada komentar: