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:
Posting Komentar