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<>();
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
01
ARRAY
Struktur Data Statis di Java
10
20
30
40
50
[0]
[1]
[2]
[3]
[4]
int[] angka = {10, 20, 30, 40, 50};
Array – Konsep & Sintaks
01
Konsep Dasar
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);
}
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);
}
}
02
ARRAYLIST
Koleksi Dinamis yang Fleksibel
Andi
Budi
Cici
+ ...
ArrayList<String> daftarNama = new ArrayList<>();
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()
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);
03
VECTOR
Thread-Safe Collection (Legacy Class)
LOCK
Thread-Safe
Hanya 1 thread yang bisa akses data pada satu waktu
Vector – Konsep & Sintaks
03
Karakteristik Vector
Method Khas Vector
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
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)
Kapan Menggunakan Apa?
[Statis] ARRAY
int[] arr = new int[5];
[Default] ARRAYLIST
ArrayList<T> list = new ArrayList<>();
[Aman] VECTOR
Vector<T> vec = new Vector<>();
TIPS: 80% kasus sehari-hari cukup gunakan ArrayList. Pilih Array jika ukuran tetap dan performa kritis.
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
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<>();
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);
}
}