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

Peta Pohon Jawa

Peta Pohon Jawa

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.


Membuat TreeMap

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,


Metode TreeMap

TreeMap class menyediakan berbagai metode yang memungkinkan kita melakukan operasi pada peta.


Sisipkan Elemen ke TreeMap

Misalnya,

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}

Akses Elemen TreeMap

1. Menggunakan entrySet(), keySet() dan values()

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 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()

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 .


Hapus Elemen TeeMap

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);

        // 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}

Ganti Elemen TreeMap

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.

1. Metode Pertama dan Terakhir

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 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

2. Plafon, Lantai, Metode Lebih Tinggi dan Lebih Rendah

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

3. pollFirstEntry() dan pollLastEntry() Metode

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}

4. Metode headMap(), tailMap() dan subMap()

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 TreeMap Lainnya

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

Pembanding 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

  1. Operator Jawa
  2. Komentar Jawa
  3. Java untuk setiap Loop
  4. String Jawa
  5. Antarmuka Jawa
  6. Kelas Anonim Java
  7. Java mencoba-dengan-sumber daya
  8. Anotasi Jawa
  9. Pernyataan Jawa
  10. Algoritma Java