Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Menguasai Java TreeSet: Operasi, Metode, dan Contoh Praktis

Java TreeSet

Dalam tutorial ini, kita akan mempelajari kelas Java TreeSet dan berbagai operasi serta metodenya dengan bantuan contoh.

Kelas TreeSet dari Java collections framework menyediakan fungsionalitas struktur data pohon.

Ia memperluas antarmuka NavigableSet.

Menguasai Java TreeSet: Operasi, Metode, dan Contoh Praktis


Membuat TreeSet

Untuk membuat tree set, kita harus terlebih dahulu mengimpor paket java.util.TreeSet.

Setelah mengimpor paket, berikut cara membuat TreeSet di Java.

  TreeSet<Integer> numbers = new TreeSet<>(); 

Di sini, kita telah membuat TreeSet tanpa argumen. Dalam hal ini, elemen-elemen dalam TreeSet diurutkan secara alami (urutan menaik).

Namun, kita dapat menyesuaikan pengurutan elemen dengan menggunakan antarmuka Comparator. Kita akan mempelajarinya lebih lanjut dalam tutorial ini.


Metode TreeSet

Kelas TreeSet menyediakan berbagai metode yang memungkinkan kita melakukan berbagai operasi pada himpunan.


Memasukkan Elemen ke TreeSet

Contohnya,

 import java.util.TreeSet; class Main { public static void main(String[] args) { TreeSet<Integer> evenNumbers = new TreeSet<>(); // Menggunakan metode add() evenNumbers.add(2); evenNumbers.add(4); evenNumbers.add(6); System.out.println("TreeSet: " + evenNumbers); TreeSet<Integer> numbers = new TreeSet<>(); numbers.add(1); // Menggunakan metode addAll() numbers.addAll(evenNumbers); System.out.println("New TreeSet: " + numbers); } } 

Output

 TreeSet: [2, 4, 6] New TreeSet: [1, 2, 4, 6] 

Mengakses Elemen TreeSet

Untuk mengakses elemen dari tree set, kita dapat menggunakan metode iterator(). Untuk menggunakan metode ini, kita harus mengimpor paket java.util.Iterator. Contohnya,

 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); // Memanggil metode iterator() Iterator<Integer> iterate = numbers.iterator(); System.out.print("TreeSet using Iterator: "); // Mengakses elemen while(iterate.hasNext()) { System.out.print(iterate.next()); System.out.print(", "); } } } 

Output

 TreeSet: [2, 5, 6] TreeSet using Iterator: 2, 5, 6, 

Menghapus Elemen

Contohnya,

 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); // Menggunakan metode remove() boolean value1 = numbers.remove(5); System.out.println("Is 5 removed? " + value1); // Menggunakan metode removeAll() boolean value2 = numbers.removeAll(numbers); System.out.println("Are all elements removed? " + value2); } } 

Output

 TreeSet: [2, 5, 6] Is 5 removed? true Are all elements removed? true 

Karena kelas TreeSet mengimplementasikan NavigableSet, ia menyediakan berbagai metode untuk menavigasi elemen-elemen tree set.

1. Metode first() dan last()

Contohnya,

 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); // Menggunakan metode first() int first = numbers.first(); System.out.println("First Number: " + first); // Menggunakan metode last() int last = numbers.last(); System.out.println("Last Number: " + last); } } 

Output

 TreeSet: [2, 5, 6] First Number: 2 Last Number: 6 

2. Metode ceiling(), floor(), higher() dan lower()

Contohnya,

 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); // Menggunakan higher() System.out.println("Using higher: " + numbers.higher(4)); // Menggunakan lower() System.out.println("Using lower: " + numbers.lower(4)); // Menggunakan ceiling() System.out.println("Using ceiling: " + numbers.ceiling(4)); // Menggunakan floor() System.out.println("Using floor: " + numbers.floor(3)); } } 

Output

 TreeSet: [2, 4, 5, 6] Using higher: 5 Using lower: 2 Using ceiling: 4 Using floor: 2 

3. Metode pollfirst() dan pollLast()

Contohnya,

 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); // Menggunakan pollFirst() System.out.println("Removed First Element: " + numbers.pollFirst()); // Menggunakan pollLast() System.out.println("Removed Last Element: " + numbers.pollLast()); System.out.println("New TreeSet: " + numbers); } } 

Output

 TreeSet: [2, 4, 5, 6] Removed First Element: 2 Removed Last Element: 6 New TreeSet: [4, 5] 

4. Metode headSet(), tailSet() dan subSet()


headSet(element, booleanValue)

Metode headSet() mengembalikan semua elemen dari tree set sebelum elemen element yang ditentukan (yang diteruskan sebagai argumen).

Parameter booleanValue adalah opsional. Nilai defaultnya adalah false.

Jika true diteruskan sebagai booleanValue, metode mengembalikan semua elemen sebelum elemen yang ditentukan termasuk elemen yang ditentukan.

Contohnya,

 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); // Menggunakan headSet() dengan nilai boolean default System.out.println("Using headSet without boolean value: " + numbers.headSet(5)); // Menggunakan headSet() dengan nilai boolean yang ditentukan System.out.println("Using headSet with boolean value: " + numbers.headSet(5, true)); } } 

Output

 TreeSet: [2, 4, 5, 6] Using headSet without boolean value: [2, 4] Using headSet with boolean value: [2, 4, 5] 

tailSet(element, booleanValue)

Metode tailSet() mengembalikan semua elemen dari tree set setelah elemen element yang ditentukan (yang diteruskan sebagai parameter) termasuk elemen element yang ditentukan.

Parameter booleanValue adalah opsional. Nilai defaultnya adalah true.

Jika false diteruskan sebagai booleanValue, metode mengembalikan semua elemen setelah elemen element yang ditentukan tanpa menyertakan elemen element yang ditentukan.

Contohnya,

 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); // Menggunakan tailSet() dengan nilai boolean default System.out.println("Using tailSet without boolean value: " + numbers.tailSet(4)); // Menggunakan tailSet() dengan nilai boolean yang ditentukan System.out.println("Using tailSet with boolean value: " + numbers.tailSet(4, false)); } } 

Output

 TreeSet: [2, 4, 5, 6] Using tailSet without boolean value: [4, 5, 6] Using tailSet with boolean value: [5, 6] 

subSet(e1, bv1, e2, bv2)

Metode subSet() 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 mengembalikan semua elemen antara e1 dan e2 tanpa menyertakan e1.

Jika true diteruskan sebagai bv2, metode mengembalikan semua elemen antara e1 dan e2, termasuk e1.

Contohnya,

 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); // Menggunakan subSet() dengan nilai boolean default System.out.println("Using subSet without boolean value: " + numbers.subSet(4, 6)); // Menggunakan subSet() dengan nilai boolean yang ditentukan System.out.println("Using subSet with boolean value: " + numbers.subSet(4, false, 6, true)); } } 

Output

 TreeSet: [2, 4, 5, 6] Using subSet without boolean value: [4, 5] Using subSet with boolean value: [5, 6] 

Operasi Himpunan

Metode dari kelas TreeSet juga dapat digunakan untuk melakukan berbagai operasi himpunan.


Gabungan Himpunan

Untuk melakukan gabungan antara dua himpunan, kita menggunakan metode addAll(). Contohnya,

 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); // Gabungan dua himpunan numbers.addAll(evenNumbers); System.out.println("Union is: " + numbers); } } 

Output

 TreeSet1: [2, 4] TreeSet2: [1, 2, 3] Union is: [1, 2, 3, 4] 

Irisan Himpunan

Untuk melakukan irisan antara dua himpunan, kita menggunakan metode retainAll(). Contohnya,

 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); // Irisan dua himpunan numbers.retainAll(evenNumbers); System.out.println("Intersection is: " + numbers); } } 

Output

 TreeSet1: [2, 4] TreeSet2: [1, 2, 3] Intersection is: [2] 

Selisih Himpunan

Untuk menghitung selisih antara dua himpunan, kita dapat menggunakan metode removeAll(). Contohnya,

 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); // Selisih antara dua himpunan numbers.removeAll(evenNumbers); System.out.println("Difference is: " + numbers); } } 

Output

 TreeSet1: [2, 4] TreeSet2: [1, 2, 3, 4] Difference is: [1, 3] 

Subset dari Himpunan

Untuk memeriksa apakah suatu himpunan adalah subset dari himpunan lain atau tidak, kita menggunakan metode containsAll(). Contohnya,

 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); // Periksa apakah primeNumbers adalah subset dari numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("Is TreeSet2 subset of TreeSet1? " + result); } } 

Output

 TreeSet1: [1, 2, 3, 4] TreeSet2: [2, 3] Is TreeSet2 subset of TreeSet1? True 

Metode Lainnya dari TreeSet

Method Description
clone() Membuat salinan TreeSet
contains() Mencari 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).


TreeSet Vs. HashSet

Kedua TreeSet dan HashSet mengimplementasikan antarmuka Set. Namun, terdapat beberapa perbedaan di antara keduanya.


TreeSet Comparator

Dalam semua contoh di atas, elemen tree set diurutkan secara alami. Namun, kita juga dapat menyesuaikan urutan elemen.

Untuk ini, kita perlu membuat kelas komparator kustom berdasarkan elemen-elemen dalam tree set diurutkan. Contohnya,

 import java.util.TreeSet; import java.util.Comparator; class Main { public static void main(String[] args) { // Membuat tree set dengan komparator kustom TreeSet<String> animals = new TreeSet<>(new CustomComparator()); animals.add("Dog"); animals.add("Zebra"); animals.add("Cat"); animals.add("Horse"); System.out.println("TreeSet: " + animals); } // Membuat kelas komparator public static class CustomComparator implements Comparator<String> { @Override public int compare(String animal1, String animal2) { int value = animal1.compareTo(animal2); // elemen diurutkan dalam urutan terbalik if (value > 0) { return -1; } else if (value < 0) { return 1; } else { return 0; } } } } 

Output

 TreeSet: [Zebra, Horse, Dog, Cat] 

Dalam contoh di atas, kita telah membuat tree set dengan meneruskan kelas CustomComparator sebagai argumen.

Kelas CustomComparator mengimplementasikan antarmuka Comparator.

Kita kemudian mengganti metode compare(). Metode sekarang akan mengurutkan elemen dalam urutan terbalik.

Untuk mempelajari lebih lanjut, kunjungi Java Comparator (dokumentasi resmi Java).


java

  1. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  2. Komentar Java: Tipe, Penggunaan, dan Best Practices
  3. Menguasai Java Enhanced For Loop: Sintaks, Contoh, dan Best Practices
  4. Menguasai String Java: Pembuatan, Metode, dan Best Practices
  5. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  6. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  7. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  8. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  9. Pernyataan Java: Panduan Praktis untuk Mendeteksi Bug dan Memastikan Keandalan Kode
  10. Menguasai Algoritma Koleksi Java: Pengurutan, Pengacakan, dan Lainnya