1 of 15

Semester 2 – Pemrograman Java

Array, ArrayList

dan Vector di Java

Memahami Struktur Data Koleksi untuk Pengembangan Aplikasi

Durasi

100 Menit

Level

Semester 2

Topik

3 Materi Utama

int[] arr = {1,2,3};

ArrayList<> list

= new ArrayList<>();

Vector<> vec

= new Vector<>();

2 of 15

Agenda Pembelajaran

01

Array

Struktur data statis, deklarasi, inisialisasi, multi-dimensi

20 mnt

02

ArrayList

Koleksi dinamis, method-method penting, studi kasus

30 mnt

03

Vector

Thread-safe collection, legacy class, kapasitas

15 mnt

04

Perbandingan

Array vs ArrayList vs Vector, kapan menggunakan apa

15 mnt

05

Latihan Praktik

Soal latihan Array dan ArrayList untuk mahasiswa

20 mnt

3 of 15

01

ARRAY

Struktur Data Statis di Java

10

20

30

40

50

[0]

[1]

[2]

[3]

[4]

int[] angka = {10, 20, 30, 40, 50};

4 of 15

Array – Konsep & Sintaks

01

Konsep Dasar

  • Ukuran TETAP (statis) setelah dibuat
  • Indeks dimulai dari 0
  • Bisa menyimpan primitif & objek
  • Akses elemen: O(1) sangat cepat
  • Atribut length (bukan method)

Kelemahan Array:

Ukuran tidak bisa berubah setelah dibuat. Tidak ada method add() / remove(). Menambah elemen di tengah sangat merepotkan.

Array.java

// Deklarasi & inisialisasi

int[] nilai = new int[5];

// Inisialisasi langsung

int[] angka = {10,20,30,40,50};

// Akses elemen

angka[0] // -> 10

angka[4] // -> 50

// Panjang array

angka.length // -> 5

// For-each loop

for (int n : angka) {

System.out.println(n);

}

5 of 15

Array – Multi-Dimensi (Matriks)

Visualisasi Matriks 2x3

1

[0][0]

2

[0][1]

3

[0][2]

4

[1][0]

5

[1][1]

6

[1][2]

int[][] m = {{1,2,3},{4,5,6}};

Analogi Array:

Seperti lemari dengan sekat TETAP — tidak bisa ditambah atau dikurangi sekat setelah dibuat.

Array2D.java

// Array 2 dimensi

int[][] matriks = new int[2][3];

// Inisialisasi langsung

int[][] m = {

{1, 2, 3},

{4, 5, 6}

};

// Akses elemen

m[0][1] // -> 2

m[1][2] // -> 6

// Loop nested

for (int[] baris : m) {

for (int val : baris) {

System.out.print(val);

}

}

6 of 15

02

ARRAYLIST

Koleksi Dinamis yang Fleksibel

Andi

Budi

Cici

+ ...

ArrayList<String> daftarNama = new ArrayList<>();

7 of 15

ArrayList – Method Penting

02

add(item)

Tambah elemen baru di akhir

get(index)

Ambil elemen berdasarkan index

set(i, val)

Ubah nilai di index i

remove(i)

Hapus elemen di index i

size()

Kembalikan jumlah elemen

contains(obj)

Cek apakah elemen ada

ArrayList.java

import java.util.ArrayList;

ArrayList<String> nama

= new ArrayList<>();

// Tambah elemen

nama.add("Andi");

nama.add("Budi");

// Akses & ubah

nama.get(0); // -> "Andi"

nama.set(1, "Cici");

// Hapus & info

nama.remove(0);

nama.size(); // -> 1

// Cek keberadaan

nama.contains("Cici"); // true

Lainnya: clear() indexOf() isEmpty() iterator()

8 of 15

ArrayList – Contoh Kasus: Nilai Mahasiswa

Daftar Nilai Mahasiswa

Mhs 1: 85

Mhs 2: 92

Mhs 3: 78

Mhs 4: 95

Mhs 5: 88

Mhs 6: 72

Mhs 7: 91

NilaiMahasiswa.java

ArrayList<Integer> nilai = new ArrayList<>();

// Tambah nilai

nilai.add(85); nilai.add(92);

nilai.add(78); nilai.add(95);

// Hitung rata-rata

int total = 0;

for (int n : nilai) {

total += n;

}

double rata = (double) total / nilai.size();

System.out.println("Rata: " + rata);

// Output: Rata: 87.5

// Hapus nilai < 80

nilai.removeIf(n -> n < 80);

9 of 15

03

VECTOR

Thread-Safe Collection (Legacy Class)

LOCK

Thread-Safe

Hanya 1 thread yang bisa akses data pada satu waktu

10 of 15

Vector – Konsep & Sintaks

03

Karakteristik Vector

  • Implementasi List (sama dgn ArrayList)
  • Package: java.util.Vector
  • THREAD-SAFE (synchronized)
  • Kapasitas awal: 10 (default)
  • Legacy class (ada sejak Java 1.0)

Method Khas Vector

  • addElement(obj) - sama dgn add()
  • elementAt(i) - sama dgn get()
  • firstElement() - elemen pertama
  • lastElement() - elemen terakhir
  • capacity() - kapasitas saat ini

Vector.java

import java.util.Vector;

Vector<String> data = new Vector<>();

// Cara add

data.add("A");

data.addElement("B"); // khas Vector

// Akses

data.get(0); // -> "A"

data.elementAt(1); // -> "B"

data.firstElement();// -> "A"

data.lastElement(); // -> "B"

// Kapasitas

data.capacity(); // -> 10 (default)

data.size(); // -> 2

11 of 15

Perbandingan: Array vs ArrayList vs Vector

Aspek

Array

ArrayList

Vector

Ukuran

Tetap (Fixed)

Dinamis

Dinamis

Sinkronisasi

Tidak ada

Tidak

Ya (Thread-safe)

Kecepatan

Tercepat

Cepat

Lebih Lambat

Tipe Data

Primitif & Objek

Hanya Objek

Hanya Objek

Panjang

length

size()

size()

Kategori

Built-in

java.util

java.util (Legacy)

12 of 15

Kapan Menggunakan Apa?

[Statis] ARRAY

  • Ukuran data sudah PASTI
  • Butuh performa maksimal
  • Data primitif (int, double)
  • Kasus sederhana & ringan

int[] arr = new int[5];

[Default] ARRAYLIST

  • Ukuran data TIDAK pasti
  • Aplikasi single-thread
  • Default choice (80% kasus)
  • Paling umum digunakan

ArrayList<T> list = new ArrayList<>();

[Aman] VECTOR

  • Aplikasi MULTI-THREAD
  • Butuh sinkronisasi otomatis
  • Alternatif: synchronizedList()
  • Jarang digunakan sekarang

Vector<T> vec = new Vector<>();

TIPS: 80% kasus sehari-hari cukup gunakan ArrayList. Pilih Array jika ukuran tetap dan performa kritis.

13 of 15

Latihan Praktik

20 menit

Soal 1 – Array

Instruksi:

Buat program Java yang:

1. Menyimpan 5 nilai ujian mahasiswa

2. Menampilkan semua nilai

3. Menampilkan nilai TERTINGGI

import java.util.Collections;

int nilaiTertinggi = Collections.max(nilaiUjian);

Contoh Output:

Semua nilai: 85 92 78 95 88

Nilai tertinggi: 95

Soal 2 – ArrayList

Instruksi:

Buat program Daftar Kontak:

1. Tambah kontak (nama + no HP)

2. Tampilkan semua kontak

3. Hapus kontak berdasarkan nama

Hint Struktur:

ArrayList<String> nama;

ArrayList<String> noHP;

// atau buat class Kontak

14 of 15

Ringkasan & Kesimpulan

01

Array

Statis, tercepat, cocok untuk data berukuran tetap

02

ArrayList

Dinamis, fleksibel, pilihan utama untuk koleksi single-thread

03

Vector

Thread-safe, legacy class, untuk aplikasi multi-thread

Kunci: 80% kasus cukup gunakan ArrayList. Array jika ukuran tetap. Vector jika multi-thread.

// Array

int[] a = {1,2,3};

// ArrayList

ArrayList<> al

= new ArrayList<>();

// Vector

Vector<> v

= new Vector<>();

15 of 15

import java.util.ArrayList;

import java.util.Collections;

public class NilaiUjian {

public static void main(String[] args) {

// 1. Membuat ArrayList untuk menyimpan nilai

ArrayList<Integer> nilaiUjian = new ArrayList<>();

// Menambahkan 5 nilai ujian

nilaiUjian.add(85);

nilaiUjian.add(92);

nilaiUjian.add(78);

nilaiUjian.add(90);

nilaiUjian.add(88);

// 2. Menampilkan semua nilai

System.out.println("=== Daftar Nilai Ujian Mahasiswa ===");

for (int i = 0; i < nilaiUjian.size(); i++) {

System.out.println("Mahasiswa " + (i+1) + ": " + nilaiUjian.get(i));

}

// 3. Menampilkan nilai tertinggi (cara 1: dengan Collections)

int nilaiTertinggi = Collections.max(nilaiUjian);

System.out.println("\n=== Nilai Tertinggi ===");

System.out.println("Nilai tertinggi: " + nilaiTertinggi);

}

}