Dalam Java, Set adalah bagian dari Java Collection Framework yang digunakan untuk menyimpan sekumpulan elemen unik (tidak ada duplikasi). Jika Anda perlu menyimpan data tanpa ada elemen yang sama, Set adalah pilihan yang tepat dibandingkan List.
Terdapat beberapa implementasi utama dari Set dalam Java:
- HashSet – Implementasi berbasis hash table, elemen tidak berurutan.
- LinkedHashSet – Seperti
HashSet, tetapi mempertahankan urutan penambahan elemen. - TreeSet – Menggunakan struktur Red-Black Tree, menyimpan elemen secara terurut.
- ConcurrentSkipListSet – Digunakan dalam multi-threading, elemen tetap terurut.
Artikel ini akan membahas berbagai jenis Set dan contoh penggunaannya.
1. Apa Itu Set di Java?
Set adalah interface dalam java.util yang tidak mengizinkan duplikasi elemen. Beberapa karakteristik utama dari Set:
✅ Tidak mengizinkan elemen duplikat.
✅ Tidak memiliki indeks, berbeda dengan List.
✅ Memiliki beberapa implementasi dengan perilaku berbeda.
2. Implementasi Set dalam Java
a) HashSet: Set dengan Performa Cepat
HashSet menggunakan struktur hash table, sehingga penyimpanan elemen tidak berurutan tetapi memiliki performa tinggi dalam operasi add, remove, dan contains (O(1) dalam banyak kasus).
Contoh Penggunaan HashSet:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("JavaScript");
set.add("Java"); // Duplikat, tidak akan ditambahkan
System.out.println(set); // Output: [JavaScript, Python, Java] (Urutan tidak terjamin)
}
}
📌 Kelebihan: Cepat dalam operasi dasar (add, remove, contains).
📌 Kekurangan: Tidak mempertahankan urutan elemen.
b) LinkedHashSet: Set dengan Urutan Terjaga
LinkedHashSet seperti HashSet, tetapi mempertahankan urutan penambahan elemen.
Contoh Penggunaan LinkedHashSet:
import java.util.LinkedHashSet;
public class LinkedHashSetExample {
public static void main(String[] args) {
LinkedHashSet<String> set = new LinkedHashSet<>();
set.add("Java");
set.add("Python");
set.add("JavaScript");
System.out.println(set); // Output: [Java, Python, JavaScript] (Urutan terjaga)
}
}
📌 Kelebihan: Mempertahankan urutan elemen seperti saat ditambahkan.
📌 Kekurangan: Sedikit lebih lambat dibanding HashSet.
c) TreeSet: Set dengan Elemen Terurut
TreeSet menyimpan elemen dalam urutan alami (ascending) menggunakan struktur Red-Black Tree.
Contoh Penggunaan TreeSet:
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
set.add(50);
set.add(10);
set.add(30);
set.add(20);
System.out.println(set); // Output: [10, 20, 30, 50] (Terurut ascending)
}
}
📌 Kelebihan: Elemen selalu terurut secara alami.
📌 Kekurangan: Lebih lambat dibanding HashSet karena menggunakan struktur tree (O(log n) untuk add, remove, contains).
d) ConcurrentSkipListSet: Set untuk Multi-threading
Digunakan dalam lingkungan multi-threading, ConcurrentSkipListSet menjaga elemen tetap terurut sambil memastikan keamanan saat diakses oleh banyak thread.
Contoh Penggunaan ConcurrentSkipListSet:
import java.util.concurrent.ConcurrentSkipListSet;
public class ConcurrentSetExample {
public static void main(String[] args) {
ConcurrentSkipListSet<Integer> set = new ConcurrentSkipListSet<>();
set.add(5);
set.add(1);
set.add(10);
System.out.println(set); // Output: [1, 5, 10] (Terurut)
}
}
📌 Kelebihan: Thread-safe, elemen tetap terurut.
📌 Kekurangan: Lebih lambat dibanding TreeSet karena tambahan mekanisme sinkronisasi.
3. Perbandingan Implementasi Set
| Fitur | HashSet | LinkedHashSet | TreeSet | ConcurrentSkipListSet |
|---|---|---|---|---|
| Duplikasi Dilarang | ✅ | ✅ | ✅ | ✅ |
| Urutan Terjaga | ❌ | ✅ | ✅ | ✅ |
| Kecepatan Operasi | 🔥 Cepat (O(1)) | ⚡ Sedikit lebih lambat | 🐢 Lebih lambat (O(log n)) | 🐢 Lebih lambat (O(log n)) |
| Struktur Data | Hash Table | Hash Table + Linked List | Red-Black Tree | Skip List |
| Thread-Safe | ❌ | ❌ | ❌ | ✅ |
🔥 Gunakan HashSet untuk performa terbaik jika urutan tidak penting.
🔄 Gunakan LinkedHashSet jika ingin mempertahankan urutan.
📈 Gunakan TreeSet jika perlu elemen selalu dalam keadaan terurut.
🛡 Gunakan ConcurrentSkipListSet jika bekerja dalam lingkungan multi-threading.
4. Operasi Dasar pada Set
Semua Set mendukung operasi dasar berikut:
import java.util.HashSet;
import java.util.Set;
public class SetOperations {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Cherry");
System.out.println(set.contains("Banana")); // true
set.remove("Banana");
System.out.println(set.size()); // 2
}
}
✅ add(value) – Menambahkan elemen ke dalam Set.
✅ remove(value) – Menghapus elemen dari Set.
✅ contains(value) – Mengecek apakah elemen ada di dalam Set.
✅ size() – Mendapatkan jumlah elemen dalam Set.
5. Tips dan Trik Menggunakan Set
🔹 Gunakan HashSet jika hanya butuh keunikan elemen tanpa peduli urutan.
🔹 Gunakan TreeSet jika ingin elemen selalu dalam keadaan terurut.
🔹 Gunakan LinkedHashSet jika ingin mempertahankan urutan elemen.
🔹 Gunakan ConcurrentSkipListSet jika bekerja dalam lingkungan multi-threading.
🔹 Konversi List ke Set untuk menghapus elemen duplikat:
List<String> list = Arrays.asList("A", "B", "A", "C");
Set<String> set = new HashSet<>(list);
Kesimpulan
Setdigunakan untuk menyimpan elemen unik tanpa duplikasi.HashSetmemiliki performa cepat, tetapi tidak mempertahankan urutan.LinkedHashSetmempertahankan urutan penambahan elemen.TreeSetmenyimpan elemen dalam urutan alami (ascending).ConcurrentSkipListSetcocok untuk aplikasi multi-threading.
Sumber dan Referensi
- https://www.digitalocean.com/community/tutorials/java-set diakses 20 Maret 2025
- https://docs.oracle.com/javase/8/docs/api/java/util/Set.html diakses 20 Maret 2025

Posting Komentar untuk "Mengenal Set di Java serta Contoh Penggunaannya"
Berilah komentar, saran, dan kritik dengan bijak