java
Dalam tutorial ini, kita akan belajar tentang kelas Java TreeSet dan berbagai operasi dan metodenya dengan bantuan contoh.
TreeSet
kelas kerangka koleksi Java menyediakan fungsionalitas struktur data pohon.
Ini memperluas antarmuka NavigableSet.
Untuk membuat kumpulan pohon, kita harus mengimpor java.util.TreeSet
paket dulu.
Setelah kita mengimpor paket, berikut adalah cara membuat TreeSet
di Jawa.
TreeSet<Integer> numbers = new TreeSet<>();
Di sini, kami telah membuat TreeSet
tanpa argumen apapun. Dalam hal ini, elemen dalam TreeSet
diurutkan secara alami (urutan menaik).
Namun, kita dapat menyesuaikan pengurutan elemen dengan menggunakan Comparator
antarmuka. Kita akan mempelajarinya nanti dalam tutorial ini.
TreeSet
class menyediakan berbagai metode yang memungkinkan kita untuk melakukan berbagai operasi di set.
add()
- menyisipkan elemen yang ditentukan ke setaddAll()
- menyisipkan semua elemen dari koleksi yang ditentukan ke setMisalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> evenNumbers = new TreeSet<>();
// Using the add() method
evenNumbers.add(2);
evenNumbers.add(4);
evenNumbers.add(6);
System.out.println("TreeSet: " + evenNumbers);
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
// Using the addAll() method
numbers.addAll(evenNumbers);
System.out.println("New TreeSet: " + numbers);
}
}
Keluaran
TreeSet: [2, 4, 6] New TreeSet: [1, 2, 4, 6]
Untuk mengakses elemen dari kumpulan pohon, kita dapat menggunakan iterator()
metode. Untuk menggunakan metode ini, kita harus mengimpor java.util.Iterator
kemasan. Misalnya,
import java.util.TreeSet;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Calling iterator() method
Iterator<Integer> iterate = numbers.iterator();
System.out.print("TreeSet using Iterator: ");
// Accessing elements
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
}
}
Keluaran
TreeSet: [2, 5, 6] TreeSet using Iterator: 2, 5, 6,
remove()
- menghapus elemen tertentu dari setremoveAll()
- menghapus semua elemen dari setMisalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using the remove() method
boolean value1 = numbers.remove(5);
System.out.println("Is 5 removed? " + value1);
// Using the removeAll() method
boolean value2 = numbers.removeAll(numbers);
System.out.println("Are all elements removed? " + value2);
}
}
Keluaran
TreeSet: [2, 5, 6] Is 5 removed? true Are all elements removed? true
Sejak TreeSet
kelas mengimplementasikan NavigableSet
, ini menyediakan berbagai metode untuk menavigasi elemen dari kumpulan pohon.
first()
- mengembalikan elemen pertama dari himpunanlast()
- mengembalikan elemen terakhir dari himpunanMisalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using the first() method
int first = numbers.first();
System.out.println("First Number: " + first);
// Using the last() method
int last = numbers.last();
System.out.println("Last Number: " + last);
}
}
Keluaran
TreeSet: [2, 5, 6] First Number: 2 Last Number: 6
element
yang ditentukan .
element
yang ditentukan .element
disahkan sebagai argumen.element
yang ditentukan . Jika elemen yang diteruskan ada dalam kumpulan pohon, ia mengembalikan element
disahkan sebagai argumen.Misalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using higher()
System.out.println("Using higher: " + numbers.higher(4));
// Using lower()
System.out.println("Using lower: " + numbers.lower(4));
// Using ceiling()
System.out.println("Using ceiling: " + numbers.ceiling(4));
// Using floor()
System.out.println("Using floor: " + numbers.floor(3));
}
}
Keluaran
TreeSet: [2, 4, 5, 6] Using higher: 5 Using lower: 2 Using ceiling: 4 Using floor: 2
pollFirst()
- mengembalikan dan menghapus elemen pertama dari setpollLast()
- mengembalikan dan menghapus elemen terakhir dari setMisalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using pollFirst()
System.out.println("Removed First Element: " + numbers.pollFirst());
// Using pollLast()
System.out.println("Removed Last Element: " + numbers.pollLast());
System.out.println("New TreeSet: " + numbers);
}
}
Keluaran
TreeSet: [2, 4, 5, 6] Removed First Element: 2 Removed Last Element: 6 New TreeSet: [4, 5]
headSet()
metode mengembalikan semua elemen dari kumpulan pohon sebelum elemen yang ditentukan (yang diteruskan sebagai argumen).
booleanValue parameter adalah opsional. Nilai defaultnya adalah false
.
Jika true
diteruskan sebagai booleanValue , metode ini mengembalikan semua elemen sebelum elemen yang ditentukan termasuk elemen yang ditentukan.
Misalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using headSet() with default boolean value
System.out.println("Using headSet without boolean value: " + numbers.headSet(5));
// Using headSet() with specified boolean value
System.out.println("Using headSet with boolean value: " + numbers.headSet(5, true));
}
}
Keluaran
TreeSet: [2, 4, 5, 6] Using headSet without boolean value: [2, 4] Using headSet with boolean value: [2, 4, 5]
tailSet()
metode mengembalikan semua elemen dari kumpulan pohon setelah elemen yang ditentukan (yang diteruskan sebagai parameter) termasuk elemen specified yang ditentukan .
booleanValue parameter adalah opsional. Nilai defaultnya adalah true
.
Jika false
diteruskan sebagai booleanValue , metode mengembalikan semua elemen setelah elemen yang ditentukan tanpa menyertakan elemen yang ditentukan .
Misalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using tailSet() with default boolean value
System.out.println("Using tailSet without boolean value: " + numbers.tailSet(4));
// Using tailSet() with specified boolean value
System.out.println("Using tailSet with boolean value: " + numbers.tailSet(4, false));
}
}
Keluaran
TreeSet: [2, 4, 5, 6] Using tailSet without boolean value: [4, 5, 6] Using tailSet with boolean value: [5, 6]
subSet()
metode mengembalikan semua elemen antara e1 dan e2 termasuk e1 .
bv1 dan bv2 adalah parameter opsional. Nilai default bv1 adalah true
, dan nilai default bv2 adalah false
.
Jika false
diteruskan sebagai bv1 , metode ini mengembalikan semua elemen di antara e1 dan e2 tanpa menyertakan e1
.
Jika true
diteruskan sebagai bv2 , metode ini mengembalikan semua elemen di antara e1 dan e2 , termasuk e1 .
Misalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(4);
numbers.add(6);
System.out.println("TreeSet: " + numbers);
// Using subSet() with default boolean value
System.out.println("Using subSet without boolean value: " + numbers.subSet(4, 6));
// Using subSet() with specified boolean value
System.out.println("Using subSet with boolean value: " + numbers.subSet(4, false, 6, true));
}
}
Keluaran
TreeSet: [2, 4, 5, 6] Using subSet without boolean value: [4, 5] Using subSet with boolean value: [5, 6]
Metode TreeSet
class juga dapat digunakan untuk melakukan berbagai operasi himpunan.
Untuk melakukan penyatuan antara dua set, kami menggunakan addAll()
metode. Misalnya,
import java.util.TreeSet;;
class Main {
public static void main(String[] args) {
TreeSet<Integer> evenNumbers = new TreeSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("TreeSet1: " + evenNumbers);
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("TreeSet2: " + numbers);
// Union of two sets
numbers.addAll(evenNumbers);
System.out.println("Union is: " + numbers);
}
}
Keluaran
TreeSet1: [2, 4] TreeSet2: [1, 2, 3] Union is: [1, 2, 3, 4]
Untuk melakukan perpotongan antara dua himpunan, kita menggunakan retainAll()
metode. Misalnya,
import java.util.TreeSet;;
class Main {
public static void main(String[] args) {
TreeSet<Integer> evenNumbers = new TreeSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("TreeSet1: " + evenNumbers);
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("TreeSet2: " + numbers);
// Intersection of two sets
numbers.retainAll(evenNumbers);
System.out.println("Intersection is: " + numbers);
}
}
Keluaran
TreeSet1: [2, 4] TreeSet2: [1, 2, 3] Intersection is: [2]
Untuk menghitung selisih antara kedua himpunan, kita dapat menggunakan removeAll()
metode. Misalnya,
import java.util.TreeSet;;
class Main {
public static void main(String[] args) {
TreeSet<Integer> evenNumbers = new TreeSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("TreeSet1: " + evenNumbers);
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
System.out.println("TreeSet2: " + numbers);
// Difference between two sets
numbers.removeAll(evenNumbers);
System.out.println("Difference is: " + numbers);
}
}
Keluaran
TreeSet1: [2, 4] TreeSet2: [1, 2, 3, 4] Difference is: [1, 3]
Untuk memeriksa apakah suatu himpunan merupakan himpunan bagian dari himpunan lain atau bukan, kita menggunakan containsAll()
metode. Misalnya,
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
System.out.println("TreeSet1: " + numbers);
TreeSet<Integer> primeNumbers = new TreeSet<>();
primeNumbers.add(2);
primeNumbers.add(3);
System.out.println("TreeSet2: " + primeNumbers);
// Check if primeNumbers is subset of numbers
boolean result = numbers.containsAll(primeNumbers);
System.out.println("Is TreeSet2 subset of TreeSet1? " + result);
}
}
Keluaran
TreeSet1: [1, 2, 3, 4] TreeSet2: [2, 3] Is TreeSet2 subset of TreeSet1? True
Metode | Deskripsi |
---|---|
clone() | Membuat salinan TreeSet |
contains() | Menelusuri TreeSet untuk elemen yang ditentukan dan mengembalikan hasil boolean |
isEmpty() | Memeriksa apakah TreeSet kosong |
size() | Mengembalikan ukuran TreeSet |
clear() | Menghapus semua elemen dari TreeSet |
Untuk mempelajari lebih lanjut, kunjungi Java TreeSet (dokumentasi resmi Java).
Keduanya TreeSet
serta HashSet
mengimplementasikan Set
antarmuka. Namun, ada beberapa perbedaan di antara mereka.
HashSet
, elemen dalam TreeSet
disimpan dalam urutan tertentu. Itu karena TreeSet
mengimplementasikan SortedSet
antarmuka juga.TreeSet
menyediakan beberapa metode untuk navigasi yang mudah. Misalnya, first()
, last()
, headSet(
), tailSet()
, dll. Itu karena TreeSet
juga mengimplementasikan NavigableSet
antarmuka.HashSet
lebih cepat dari TreeSet
untuk operasi dasar seperti tambah, hapus, isi, dan ukuran.Dalam semua contoh di atas, elemen kumpulan pohon diurutkan secara alami. Namun, kami juga dapat menyesuaikan urutan elemen.
Untuk ini, kita perlu membuat kelas pembanding kita sendiri berdasarkan elemen mana dalam kumpulan pohon yang diurutkan. Misalnya,
import java.util.TreeSet;
import java.util.Comparator;
class Main {
public static void main(String[] args) {
// Creating a tree set with customized comparator
TreeSet<String> animals = new TreeSet<>(new CustomComparator());
animals.add("Dog");
animals.add("Zebra");
animals.add("Cat");
animals.add("Horse");
System.out.println("TreeSet: " + animals);
}
// Creating a comparator class
public static class CustomComparator implements Comparator<String> {
@Override
public int compare(String animal1, String animal2) {
int value = animal1.compareTo(animal2);
// elements are sorted in reverse order
if (value > 0) {
return -1;
}
else if (value < 0) {
return 1;
}
else {
return 0;
}
}
}
}
Keluaran
TreeSet: [Zebra, Horse, Dog, Cat]
Pada contoh di atas, kami telah membuat kumpulan pohon yang melewati CustomComparator kelas sebagai argumen.
CustomComparator kelas mengimplementasikan Comparator
antarmuka.
Kami kemudian menimpa compare()
metode. Metode ini sekarang akan mengurutkan elemen dalam urutan terbalik.
Untuk mempelajari lebih lanjut, kunjungi Java Comparator (dokumentasi resmi Java).
java
Java ConcurrentHashMap Dalam tutorial ini, kita akan belajar tentang kelas Java ConcurrentHashMap dan operasinya dengan bantuan contoh. ConcurrentHashMap kelas kerangka koleksi Java menyediakan peta thread-safe. Artinya, beberapa utas dapat mengakses peta sekaligus tanpa memengaruhi konsistensi en
Kelas HashSet Java Dalam tutorial ini, kita akan belajar tentang kelas Java HashSet. Kita akan belajar tentang metode dan operasi set hash yang berbeda dengan bantuan contoh. HashSet class framework Java Collections menyediakan fungsionalitas struktur data tabel hash. Ini mengimplementasikan anta
Java TreeSet Dalam tutorial ini, kita akan belajar tentang kelas Java TreeSet dan berbagai operasi dan metodenya dengan bantuan contoh. TreeSet kelas kerangka koleksi Java menyediakan fungsionalitas struktur data pohon. Ini memperluas antarmuka NavigableSet. Membuat TreeSet Untuk membuat kump
Biasanya, saat kita bekerja dengan Numbers, kita menggunakan tipe data primitif seperti byte, int, long, double, dll. Contoh int i = 5000; float gpa = 13.65f; double mask = 125; Namun, dalam pengembangan, kami menemukan situasi di mana kami perlu menggunakan objek alih-alih tipe data primitif. Un