Satu set hanyalah kumpulan objek unik. Unik berarti tidak ada dua objek yang memiliki nilai yang sama. Bergantung pada implementasi set, itu mungkin dipesan atau tidak. Set Java, sebagai Tipe Data Abstrak (ADT), memiliki beberapa operasi kunci (di mana T mewakili tipe data apa pun misalnya int, String, atau objek kelas apa pun):

boolean add(T item)
: mengembalikan nilai true jika item berhasil ditambahkan ke set, dan false jika item sudah ada di set.boolean remove(T item)
: mengembalikan true jika item berhasil dihapus dari set dan false sebaliknya (jika item tidak ada di set).boolean contains(T item)
: mengembalikan true jika item ada di set dan false sebaliknya.boolean isEmpty()
: mengembalikan true jika set kosong dan false sebaliknya.
contains()
memberikan runtime yang bagus untuk ini: kompleksitas waktu O(1) atau O(log n) bergantung pada apakah implementasi yang digunakan adalah a HashSet
atau aTreeSet
, masing-masing. Jadi untuk apa satu set digunakan? Nah, jika Anda perlu melacak banyak objek yang berbeda--seperti ID, nama, atau pengidentifikasi unik lainnya--dan sering memeriksa apakah ada item dalam koleksi semacam itu, maka satu set mungkin merupakan pilihan yang baik. Berikut adalah contoh kasus penggunaan himpunan: Bayangkan Anda memiliki daftar Student
objek yang mewakili semua siswa di kelas tertentu. Masing-masing Student
mungkin memiliki nama unik (string) dan nilai (int) untuk kelas ini. Jika Anda sering ingin mereferensikan daftar semua siswa A (tingkat >=90), maka akan membosankan untuk mengulang daftar ini dan memeriksa nilai setiap siswa setiap saat. Sebagai gantinya, Anda mungkin menggunakan HashSet
string yang melacak semua siswa A di kelas, seperti:
- Setiap kali nilai siswa diperbarui, Anda cukup memeriksa apakah nilai baru siswa tersebut lebih besar atau sama dengan 90 atau tidak.
- Jika demikian, tambahkan mereka ke himpunan siswa A menggunakan
add()
- Jika mereka sudah menjadi siswa A, maka operasi ini diabaikan begitu saja.
- Jika tidak, maka keluarkan mereka dari himpunan siswa A yang menggunakan
remove()
- Jika mereka bukan siswa A pada saat ini, maka operasi ini diabaikan begitu saja.
- Jika demikian, tambahkan mereka ke himpunan siswa A menggunakan
contains(“Johnny Appleseed”)
lokasi syuting. Tentu saja, ini hanyalah salah satu contoh kasus penggunaan untuk satu set, dan masalah khusus untuk melacak siswa A ini dapat diselesaikan dengan cara lain.
Implementasi: HashSet di Java dan Contoh Java TreeSet
BaikHashSet
di Jawa dan TreeSet
di Jawa datang dalam file java.utils package
. Anda dapat mengimpornya seperti itu:
// imports everything from Java's util package, including HashSet and TreeSet
import java.util.*;
atau
import java.util.HashSet; // imports only the Java HashSet
import java.util.TreeSet; // imports only the Java TreeSet
Perbedaan utama antara Java HashSet
dan Java TreeSet
adalah yang TreeSet
diurutkan, sedangkan yang HashSet
tidak. Inilah sebabnya mengapa TreeSet
memiliki kompleksitas waktu O(log n) untuk operasi kunci, sedangkan HashSet
memiliki kompleksitas waktu O(1) atau konstan; harus TreeSet
menjaga ketertiban setiap saat. Selain operasi kumpulan kunci yang disebutkan sebelumnya, the HashSet
dan TreeSet
di Java memiliki beberapa fungsi bermanfaat lainnya:
void clear()
: membersihkan set semua objek.int size()
: mengembalikan jumlah objek dalam set.Object clone()
: mengembalikan salinan set yang dangkal.Iterator iterator()
: mengembalikan iterator ke set, mulai dari objek pertama.
size()
jika Anda ingin melihat berapa banyak siswa 'A' yang Anda miliki, atau clear()
jika Anda ingin menghapus daftar di akhir semester. Anda mungkin menggunakan clone()
untuk membuat dan menyimpan klon dari daftar siswa A pada titik waktu tertentu, seperti selama laporan tengah semester (dengan cara ini klon tidak tetap up-to-date dengan yang asli).
Contoh Java HashSet
Berikut adalah contoh singkat dariHashSet
s String
yang digunakan di Jawa:
import java.util.HashSet;
class HashSetDemo {
public static void main(String[] args)
{
// create a HashSet of Strings
HashSet<String> hs = new HashSet<String>();
// Add elements using the add() method
hs.add("Collin");
hs.add("Bob");
hs.add("Abigail");
// Duplicates will ignored; this statement is useless
hs.add("Collin");
System.out.println(hs);
System.out.println("Bob is in the set (T/F): " + hs.contains("Bob"));
System.out.println("Max is in the set (T/F): " + hs.contains("Max"));
}
}
Keluaran: --------
[Collin, Bob, Abigail]
Bob is in the set (T/F): true
Max is in the set (T/F): false
Contoh Java TreeSet
Kumpulan contoh Java dapat membantu Anda memahami teorinya. Berikut adalah contoh singkat aTreeSet
of String
s yang digunakan di Jawa:
import java.util.TreeSet;
class TreeSetDemo {
public static void main(String[] args)
{
// create a TreeSet of Strings
TreeSet<String> ts = new TreeSet<String>();
// Add elements using the add() method.
ts.add("Collin");
ts.add("Bob");
ts.add("Abigail");
// Duplicates will ignored; this statement is useless
ts.add("Collin");
// printing the set prints the names in alphabetical order!
System.out.println(ts);
System.out.println("Bob is in the set (T/F): " + ts.contains("Bob"));
System.out.println("Max is in the set (T/F): " + ts.contains("Max"));
System.out.println("Size of the set: " + ts.size());
ts.clear();
System.out.println("Size of the set after clear(): " + ts.size());
}
}
Keluaran: -------
[Abigail, Bob, Collin]
Bob is in the set (T/F): true
Max is in the set (T/F): false
Size of the set: 3
Size of the set after clear(): 0
Itu saja! Semoga ini membantu 😊
GO TO FULL VERSION