java
Dalam tutorial ini, kita akan belajar tentang kelas Java TreeMap dan operasinya dengan bantuan contoh.
TreeMap
kelas kerangka koleksi Java menyediakan implementasi struktur data pohon.
Ini mengimplementasikan antarmuka NavigableMap.
Untuk membuat TreeMap
, kita harus mengimpor java.util.TreeMap
paket dulu. Setelah kita mengimpor paket, berikut adalah cara membuat TreeMap
di Jawa.
TreeMap<Key, Value> numbers = new TreeMap<>();
Pada kode di atas, kita telah membuat TreeMap
bernama angka tanpa argumen apapun. Dalam hal ini, elemen dalam TreeMap
diurutkan secara alami (urutan menaik).
Namun, kita dapat menyesuaikan pengurutan elemen dengan menggunakan Comparator
antarmuka. Kita akan mempelajarinya nanti dalam tutorial ini.
Di sini,
TreeMap
class menyediakan berbagai metode yang memungkinkan kita melakukan operasi pada peta.
put()
- menyisipkan pemetaan kunci/nilai yang ditentukan (entri) ke petaputAll()
- menyisipkan semua entri dari peta yang ditentukan ke peta iniputIfAbsent()
- menyisipkan pemetaan kunci/nilai yang ditentukan ke peta jika kunci yang ditentukan tidak ada di petaMisalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// Creating TreeMap of even numbers
TreeMap<String, Integer> evenNumbers = new TreeMap<>();
// Using put()
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
// Using putIfAbsent()
evenNumbers.putIfAbsent("Six", 6);
System.out.println("TreeMap of even numbers: " + evenNumbers);
//Creating TreeMap of numbers
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("One", 1);
// Using putAll()
numbers.putAll(evenNumbers);
System.out.println("TreeMap of numbers: " + numbers);
}
}
Keluaran
TreeMap of even numbers: {Four=4, Six=6, Two=2} TreeMap of numbers: {Four=4, One=1, Six=6, Two=2}
1. Menggunakan entrySet(), keySet() dan values()
entrySet()
- mengembalikan satu set semua pemetaan kunci/nilai (entri) dari peta pohonkeySet()
- mengembalikan satu set semua kunci peta pohonvalues()
- mengembalikan satu set semua peta peta pohonMisalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("TreeMap: " + numbers);
// Using entrySet()
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet()
System.out.println("Keys: " + numbers.keySet());
// Using values()
System.out.println("Values: " + numbers.values());
}
}
Keluaran
TreeMap: {One=1, Three=3, Two=2} Key/Value mappings: [One=1, Three=3, Two=2] Keys: [One, Three, Two] Values: [1, 3, 2]
2. Menggunakan get() dan getOrDefault()
get()
- Mengembalikan nilai yang terkait dengan kunci yang ditentukan. Mengembalikan null jika kunci tidak ditemukan.getOrDefault()
- Mengembalikan nilai yang terkait dengan kunci yang ditentukan. Mengembalikan nilai default yang ditentukan jika kunci tidak ditemukan.Misalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("TreeMap: " + numbers);
// Using get()
int value1 = numbers.get("Three");
System.out.println("Using get(): " + value1);
// Using getOrDefault()
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Using getOrDefault(): " + value2);
}
}
Keluaran
TreeMap: {One=1, Three=3, Two=2} Using get(): 3 Using getOrDefault(): 5
Di sini, getOrDefault()
metode tidak menemukan kunci Lima . Karenanya ia mengembalikan nilai default yang ditentukan 5 .
remove(key)
- mengembalikan dan menghapus entri yang terkait dengan kunci yang ditentukan dari TreeMapremove(key, value)
- menghapus entri dari peta hanya jika kunci yang ditentukan dikaitkan dengan nilai yang ditentukan dan mengembalikan nilai booleanMisalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("TreeMap: " + numbers);
// remove method with single parameter
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// remove method with two parameters
boolean result = numbers.remove("Three", 3);
System.out.println("Is the entry {Three=3} removed? " + result);
System.out.println("Updated TreeMap: " + numbers);
}
}
Keluaran
TreeMap: {One=1, Three=3, Two=2} Removed value = 2 Is the entry {Three=3} removed? True Updated TreeMap: {One=1}
replace(key, value)
- menggantikan nilai yang dipetakan oleh kunci yang ditentukan dengan nilai . yang baru replace(key, old, new)
- mengganti nilai lama dengan nilai baru hanya jika nilai lama sudah dikaitkan dengan kunci yang ditentukanreplaceAll(function)
- mengganti setiap nilai peta dengan hasil fungsi yang ditentukan Misalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
System.out.println("Original TreeMap: " + numbers);
// Using replace()
numbers.replace("Second", 22);
numbers.replace("Third", 3, 33);
System.out.println("TreeMap using replace: " + numbers);
// Using replaceAll()
numbers.replaceAll((key, oldValue) -> oldValue + 2);
System.out.println("TreeMap using replaceAll: " + numbers);
}
}
Keluaran
Original TreeMap: {First=1, Second=2, Third=3} TreeMap using replace(): {First=1, Second=22, Third=33} TreeMap using replaceAll(): {First=3, Second=24, Third=35}
Pada program di atas perhatikan pernyataan
numbers.replaceAll((key, oldValue) -> oldValue + 2);
Di sini, kami telah melewati ekspresi lambda sebagai argumen.
replaceAll()
metode mengakses semua entri peta. Kemudian mengganti semua elemen dengan nilai baru (dikembalikan dari ekspresi lambda).
Sejak TreeMap
kelas mengimplementasikan NavigableMap
, ini menyediakan berbagai metode untuk menavigasi elemen peta pohon.
firstKey()
- mengembalikan kunci pertama petafirstEntry()
- mengembalikan pemetaan kunci/nilai dari kunci pertama petalastKey()
- mengembalikan kunci terakhir petalastEntry()
- mengembalikan pemetaan kunci/nilai dari kunci terakhir petaMisalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
System.out.println("TreeMap: " + numbers);
// Using the firstKey() method
String firstKey = numbers.firstKey();
System.out.println("First Key: " + firstKey);
// Using the lastKey() method
String lastKey = numbers.lastKey();
System.out.println("Last Key: " + lastKey);
// Using firstEntry() method
System.out.println("First Entry: " + numbers.firstEntry());
// Using the lastEntry() method
System.out.println("Last Entry: " + numbers.lastEntry());
}
}
Keluaran
TreeMap: {First=1, Second=2, Third=3} First Key: First Last Key: Third First Entry: First=1 Last Entry: Third=3
Misalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 5);
numbers.put("Third", 4);
numbers.put("Fourth", 6);
System.out.println("TreeMap: " + numbers);
// Using higher()
System.out.println("Using higherKey(): " + numbers.higherKey("Fourth"));
System.out.println("Using higherEntry(): " + numbers.higherEntry("Fourth"));
// Using lower()
System.out.println("\nUsing lowerKey(): " + numbers.lowerKey("Fourth"));
System.out.println("Using lowerEntry(): " + numbers.lowerEntry("Fourth"));
// Using ceiling()
System.out.println("\nUsing ceilingKey(): " + numbers.ceilingKey("Fourth"));
System.out.println("Using ceilingEntry(): " + numbers.ceilingEntry("Fourth"));
// Using floor()
System.out.println("\nUsing floorKey(): " + numbers.floorKey("Fourth"));
System.out.println("Using floorEntry(): " + numbers.floorEntry("Fourth"));
}
}
Keluaran
TreeMap: {First=1, Fourth=6, Second=5, Third=4} Using higherKey(): Second Using higherEntry(): Second=5 Using lowerKey(): First Using lowerEntry(): First=1 Using ceilingKey(): Fourth Using ceilingEntry(): Fourth=6 Using floorkey(): Fourth Using floorEntry(): Fourth=6
pollFirstEntry()
- mengembalikan dan menghapus entri yang terkait dengan kunci pertama petapollLastEntry()
- mengembalikan dan menghapus entri yang terkait dengan kunci terakhir peta
Misalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
System.out.println("TreeMap: " + numbers);
//Using the pollFirstEntry() method
System.out.println("Using pollFirstEntry(): " + numbers.pollFirstEntry());
// Using the pollLastEntry() method
System.out.println("Using pollLastEntry(): " + numbers.pollLastEntry());
System.out.println("Updated TreeMap: " + numbers);
}
}
Keluaran
TreeMap: {First=1, Second=2, Third=3} Using pollFirstEntry(): First=1 Using pollLastEntry(): Third=3 Updated TreeMap: {Second=2}
headMap(kunci, booleanValue)
headMap()
metode mengembalikan semua pasangan kunci/nilai peta pohon sebelum kunci . yang ditentukan (yang diteruskan sebagai argumen).
booleanValue parameter adalah opsional. Nilai defaultnya adalah false
.
Jika true
diteruskan sebagai booleanValue , metode ini juga menyertakan pasangan kunci/nilai dari key
yang diteruskan sebagai argumen.
Misalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
numbers.put("Fourth", 4);
System.out.println("TreeMap: " + numbers);
System.out.println("\nUsing headMap() Method:");
// Using headMap() with default booleanValue
System.out.println("Without boolean value: " + numbers.headMap("Fourth"));
// Using headMap() with specified booleanValue
System.out.println("With boolean value: " + numbers.headMap("Fourth", true));
}
}
Keluaran
TreeMap: {First=1, Fourth=4, Second=2, Third=3} Using headMap() Method: Without boolean value: {First=1} With boolean value: {First=1, Fourth=4}
tailMap(kunci, booleanValue)
tailMap()
metode mengembalikan semua pasangan kunci/nilai peta pohon mulai dari kunci specified yang ditentukan (yang diteruskan sebagai argumen).
booleanValue adalah parameter opsional. Nilai defaultnya adalah true
.
Jika false
diteruskan sebagai booleanValue , metode ini tidak menyertakan pasangan kunci/nilai dari key
. yang ditentukan .
Misalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
numbers.put("Fourth", 4);
System.out.println("TreeMap: " + numbers);
System.out.println("\nUsing tailMap() Method:");
// Using tailMap() with default booleanValue
System.out.println("Without boolean value: " + numbers.tailMap("Second"));
// Using tailMap() with specified booleanValue
System.out.println("With boolean value: " + numbers.tailMap("Second", false));
}
}
Keluaran
TreeMap: {First=1, Fourth=4, Second=2, Third=3} Using tailMap() Method: Without boolean value: {Second=2, Third=3} With boolean value: {Third=3}
subPeta(k1, bV1, k2, bV2)
subMap()
metode mengembalikan semua entri yang terkait dengan kunci antara k1 dan k2 termasuk entri k1 .
bV1 dan bV2 adalah parameter boolean opsional. Nilai default bV1 adalah true
dan nilai default bV2 adalah false
.
Jika false
diteruskan sebagai bV1 , metode ini mengembalikan semua entri yang terkait dengan kunci antara k1 dan k2 tanpa menyertakan entri k1 .
Jika true
diteruskan sebagai bV2 , metode ini mengembalikan semua entri yang terkait dengan kunci antara k1 dan k2 termasuk entri k2 .
Misalnya,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
numbers.put("Fourth", 4);
System.out.println("TreeMap: " + numbers);
System.out.println("\nUsing subMap() Method:");
// Using subMap() with default booleanValue
System.out.println("Without boolean value: " + numbers.subMap("Fourth", "Third"));
// Using subMap() with specified booleanValue
System.out.println("With boolean value: " + numbers.subMap("Fourth", false, "Third", true));
}
}
Keluaran
TreeMap: {First=1, Fourth=2, Second=2, Third=3} Using subMap() Method: Without boolean value: {Fourth=4, Second=2} With boolean value: {Second=2, Third=3}
Metode | Deskripsi |
---|---|
clone() | Membuat salinan TreeMap |
containsKey() | Menelusuri TreeMap untuk kunci yang ditentukan dan mengembalikan hasil boolean |
containsValue() | Menelusuri TreeMap untuk nilai yang ditentukan dan mengembalikan hasil boolean |
size() | Mengembalikan ukuran TreeMap |
clear() | Menghapus semua entri dari TreeMap |
Dalam semua contoh di atas, elemen peta pohon diurutkan secara alami (dalam urutan menaik). Namun, kami juga dapat menyesuaikan urutan kunci.
Untuk ini, kita perlu membuat kelas pembanding kita sendiri berdasarkan kunci mana dalam peta pohon yang diurutkan. Misalnya,
import java.util.TreeMap;
import java.util.Comparator;
class Main {
public static void main(String[] args) {
// Creating a treemap with a customized comparator
TreeMap<String, Integer> numbers = new TreeMap<>(new CustomComparator());
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
numbers.put("Fourth", 4);
System.out.println("TreeMap: " + numbers);
}
// Creating a comparator class
public static class CustomComparator implements Comparator<String> {
@Override
public int compare(String number1, String number2) {
int value = number1.compareTo(number2);
// elements are sorted in reverse order
if (value > 0) {
return -1;
}
else if (value < 0) {
return 1;
}
else {
return 0;
}
}
}
}
Keluaran
TreeMap: {Third=3, Second=2, Fourth=4, First=1}
Pada contoh di atas, kami telah membuat peta pohon yang melewati CustomComparator kelas sebagai argumen.
CustomComparator kelas mengimplementasikan Comparator
antarmuka.
Kami kemudian menimpa compare()
metode untuk 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