๐Ÿ“‹ ArrayList di Java

๐Ÿ’กApa itu ArrayList?

ArrayList adalah struktur data dinamis di Java yang dapat berubah ukuran secara otomatis. Berbeda dengan array biasa yang ukurannya tetap, ArrayList bisa bertambah atau berkurang sesuai kebutuhan.

Analogi: ArrayList seperti tas ransel yang bisa mengembang. Jika isinya bertambah, tas akan membesar. Jika isinya berkurang, tas akan mengecil.

โš–๏ธArray vs ArrayList

๐Ÿ“ฆ Array Biasa

  • โœ… Ukuran tetap (fixed size)
  • โœ… Lebih cepat dalam akses
  • โŒ Tidak bisa menambah/kurangi ukuran
  • โŒ Harus tahu ukuran dari awal
  • โœ… Bisa tipe primitif (int, double)
java
int[] angka = new int[5];
// Ukuran tetap 5

๐Ÿ“‹ ArrayList

  • โœ… Ukuran dinamis (flexible)
  • โœ… Bisa tambah/hapus elemen
  • โœ… Banyak method bawaan
  • โŒ Sedikit lebih lambat
  • โŒ Hanya object (Integer, Double)
java
ArrayList<Integer> angka = new ArrayList<>();
// Ukuran otomatis menyesuaikan

๐Ÿ“Import dan Deklarasi

Untuk menggunakan ArrayList, kita harus import terlebih dahulu.

java
import java.util.ArrayList;

// Deklarasi ArrayList untuk String
ArrayList<String> buah = new ArrayList<>();

// Deklarasi ArrayList untuk Integer
ArrayList<Integer> angka = new ArrayList<>();

// Deklarasi ArrayList untuk Double
ArrayList<Double> nilai = new ArrayList<>();

// Dengan nilai awal
ArrayList<String> nama = new ArrayList<>();
nama.add("Budi");
nama.add("Ani");
nama.add("Citra");

Catatan: ArrayList menggunakan Generic(tanda <Type>) untuk menentukan tipe data yang disimpan.

๐Ÿ› ๏ธMethod Penting di ArrayList

1. add() - Menambah Elemen

java
ArrayList<String> buah = new ArrayList<>();

// Tambah di akhir
buah.add("Apel");
buah.add("Jeruk");
buah.add("Mangga");

// Tambah di index tertentu
buah.add(1, "Pisang");  // Insert di index 1

System.out.println(buah);
// Output: [Apel, Pisang, Jeruk, Mangga]

2. get() - Mengambil Elemen

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");
buah.add("Mangga");

String pertama = buah.get(0);  // "Apel"
String kedua = buah.get(1);    // "Jeruk"

System.out.println("Buah pertama: " + pertama);

3. remove() - Menghapus Elemen

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");
buah.add("Mangga");

// Hapus berdasarkan index
buah.remove(1);  // Hapus "Jeruk"

// Hapus berdasarkan nilai
buah.remove("Apel");  // Hapus "Apel"

System.out.println(buah);  // [Mangga]

4. set() - Mengubah Elemen

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");

// Ubah elemen di index 1
buah.set(1, "Mangga");

System.out.println(buah);  // [Apel, Mangga]

5. size() - Ukuran ArrayList

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");
buah.add("Mangga");

int jumlah = buah.size();  // 3

System.out.println("Jumlah buah: " + jumlah);

6. clear() - Hapus Semua

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");

buah.clear();  // Hapus semua elemen

System.out.println(buah.size());  // 0

โšก๐ŸŽฎ Demo Interaktif: ArrayList String

๐ŸŽฎ

Kelola Daftar Buah

Coba berbagai operasi ArrayList secara interaktif

๐Ÿ“‹ ArrayList Buah

Size: 3

Index 0: Apel
Index 1: Jeruk
Index 2: Mangga

โž• add() - Tambah Elemen

๐Ÿ“ get() - Ambil Elemen

โœ๏ธ set() - Ubah Elemen

๐Ÿ—‘๏ธ remove() - Hapus by Index

๐Ÿ” indexOf() - Cari Elemen

๐Ÿ”„Looping ArrayList

Ada beberapa cara untuk melakukan loop pada ArrayList.

1. For Loop Biasa

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");
buah.add("Mangga");

for (int i = 0; i < buah.size(); i++) {
    System.out.println(i + ": " + buah.get(i));
}

/* Output:
0: Apel
1: Jeruk
2: Mangga
*/

2. Enhanced For Loop (For-Each)

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");
buah.add("Mangga");

for (String namaBuah : buah) {
    System.out.println(namaBuah);
}

/* Output:
Apel
Jeruk
Mangga
*/

3. forEach dengan Lambda (Java 8+)

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");
buah.add("Mangga");

buah.forEach(namaBuah -> System.out.println(namaBuah));

// Atau dengan method reference
buah.forEach(System.out::println);

๐Ÿ”งMethod Lainnya

contains() - Cek Keberadaan

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");

boolean adaApel = buah.contains("Apel");  // true
boolean adaMangga = buah.contains("Mangga");  // false

if (buah.contains("Apel")) {
    System.out.println("Apel ada di list!");
}

isEmpty() - Cek Kosong

java
ArrayList<String> buah = new ArrayList<>();

if (buah.isEmpty()) {
    System.out.println("ArrayList kosong");
}

buah.add("Apel");

if (!buah.isEmpty()) {
    System.out.println("ArrayList ada isinya");
}

indexOf() & lastIndexOf()

java
ArrayList<String> buah = new ArrayList<>();
buah.add("Apel");
buah.add("Jeruk");
buah.add("Apel");

int pertama = buah.indexOf("Apel");      // 0
int terakhir = buah.lastIndexOf("Apel"); // 2
int notFound = buah.indexOf("Mangga");   // -1 (tidak ada)

๐Ÿ”ข๐ŸŽฎ Demo: ArrayList dengan Angka

๐ŸŽฎ

Operasi ArrayList Integer

Coba sort, reverse, dan operasi matematika

๐Ÿ“Š ArrayList Numbers

10
5
20
15
8
Size:
5
Sum:
58
Avg:
11.6

Kode Java untuk Sort:

Collections.sort(numbers);  // Sort ascending

๐ŸŽ“Contoh Program Lengkap

Program manajemen daftar siswa menggunakan ArrayList.

java
import java.util.ArrayList;
import java.util.Scanner;

public class ManajemenSiswa {
    public static void main(String[] args) {
        ArrayList<String> siswa = new ArrayList<>();
        Scanner input = new Scanner(System.in);
        int pilihan;
        
        do {
            System.out.println("\n=== MANAJEMEN SISWA ===");
            System.out.println("1. Tambah Siswa");
            System.out.println("2. Lihat Semua Siswa");
            System.out.println("3. Hapus Siswa");
            System.out.println("4. Cari Siswa");
            System.out.println("0. Keluar");
            System.out.print("Pilih: ");
            
            pilihan = input.nextInt();
            input.nextLine();  // Clear buffer
            
            switch (pilihan) {
                case 1:
                    System.out.print("Nama siswa: ");
                    String nama = input.nextLine();
                    siswa.add(nama);
                    System.out.println("โœ… Siswa ditambahkan!");
                    break;
                    
                case 2:
                    System.out.println("\n๐Ÿ“‹ Daftar Siswa:");
                    if (siswa.isEmpty()) {
                        System.out.println("Belum ada siswa");
                    } else {
                        for (int i = 0; i < siswa.size(); i++) {
                            System.out.println((i+1) + ". " + siswa.get(i));
                        }
                    }
                    break;
                    
                case 3:
                    System.out.print("Index siswa yang dihapus: ");
                    int index = input.nextInt() - 1;
                    if (index >= 0 && index < siswa.size()) {
                        siswa.remove(index);
                        System.out.println("โœ… Siswa dihapus!");
                    } else {
                        System.out.println("โŒ Index tidak valid!");
                    }
                    break;
                    
                case 4:
                    System.out.print("Nama yang dicari: ");
                    String cari = input.nextLine();
                    if (siswa.contains(cari)) {
                        int idx = siswa.indexOf(cari);
                        System.out.println("โœ… Ditemukan di posisi " + (idx+1));
                    } else {
                        System.out.println("โŒ Tidak ditemukan");
                    }
                    break;
            }
            
        } while (pilihan != 0);
        
        System.out.println("Program selesai!");
    }
}

๐Ÿ“ Ringkasan ArrayList

  • โœ… ArrayList adalah array dinamis yang ukurannya fleksibel
  • โœ… Import: import java.util.ArrayList;
  • โœ… Deklarasi: ArrayList<Type> name = new ArrayList<>();
  • โœ… Method penting: add(), get(), remove(), set(), size(), clear()
  • โœ… Loop dengan for, for-each, atau forEach()
  • โœ… Gunakan ArrayList ketika ukuran data tidak pasti
  • โœ… Lebih fleksibel tapi sedikit lebih lambat dari array biasa