CodeGym/Blog Java/rawak/Antara Muka Peta di Jawa
John Squirrels
Tahap
San Francisco

Antara Muka Peta di Jawa

Diterbitkan dalam kumpulan

Apakah itu Antara Muka Peta Java

Antara muka Peta Java ialah sebahagian daripada rangka kerja Koleksi Java, tetapi ia bukan subjenis antara muka Koleksi. Jadi ia berkelakuan dengan cara yang berbeza berbanding dengan, katakan, Senarai, atau Objek koleksi lain. Setiap elemen Map<Key, Value> mewakili pasangan nilai kunci. Kedua-dua Kunci dan nilai adalah beberapa objek. Semua kunci dalam peta tertentu adalah unik, manakala nilai tidak, jadi ia boleh diduplikasi. Anda mungkin memikirkan Peta dalam Java seperti sejenis kamus atau katalog kedai dalam talian, di mana anda boleh mencari sebarang item menggunakan indeksnya yang unik. Kuncinya ialah pengecam unik bagi nilai dalam Peta. Contohnya dalam Map<String, Item> String ialah ID beberapa Item daripada kedai dalam talian. Menurut dokumentasi Map mempunyai Subinterfaces seterusnya:
    Ikatan ;
  • ConcurrentMap<K,V> ;
  • ConcurrentNavigableMap<K,V> ;
  • LogicalMessageContext ;
  • MessageContext ;
  • NavigableMap<K,V> ;
  • SOAPMessageContext ;
  • Peta Isih<K,V> .
Dan Melaksanakan Kelas:
  • Peta Abstrak
  • Atribut
  • AuthProvider
  • ConcurrentHashMap
  • ConcurrentSkipListMap
  • EnumMap
  • HashMap
  • Hashtable
  • IdentityHashMap
  • LinkedHashMap
  • PrinterStateReasons
  • Hartanah
  • Pembekal
  • Petunjuk Rendering
  • SimpleBindings
  • TabularDataSupport
  • Peta Pokok
  • UIDfaults
  • WeakHashMap
  • Java AbstractMap ialah kelas abstrak yang melaksanakan kebanyakan antara muka Peta.
  • Java HashMap ialah struktur data untuk menyimpan pasangan nilai kunci menggunakan jadual cincang.
  • Java TreeMap ialah struktur data untuk menggunakan pokok, iaitu paparan dengan kekunci yang diisih.
  • WeakHashMap untuk menggunakan jadual hash dengan kekunci lemah, paparkan dengan nilai yang boleh dipadamkan oleh pemungut sampah jika ia tidak lagi digunakan.
  • LinkedHashMap ialah peta dengan susunan penambahan elemen, membenarkan lelaran dalam susunan sisipan.
  • EnumMap memanjangkan kelas AbstractMap untuk digunakan dengan kunci enum.
  • IdentityHashMap menggunakan semakan kesetaraan rujukan apabila membandingkan dokumen, memetakan dengan kunci berbanding menggunakan operasi == dan bukannya kaedah equals()
Di sini kami berminat dengan pelaksanaan Antara Muka Peta yang paling popular: HashMap, TreeMap dan LinkedHashMap. By the way, susunan elemen peta bergantung pada pelaksanaan tertentu. Katakan, TreeMap dan LinkedHashMap mempunyai susunan unsur yang boleh diramal, manakala HashMap tidak.

Kaedah peta

Operasi utama mana-mana Peta ialah memasukkan, mengalih keluar dan mencari elemen.
  • public Object put(Object key, Object value) memasukkan elemen ke dalam peta.
  • public void putAll(Peta peta) memasukkan peta yang ditentukan di dalam peta.
  • public Object remove(Object key) memadamkan entri mengikut kekunci yang ditentukan.
  • public Object get(Object key) mengembalikan nilai untuk kunci yang ditentukan.
  • public boolean containsKey(Object key) mencari kunci yang ditentukan dari peta ini
  • public Set keySet() mengembalikan paparan Set yang mengandungi semua kunci
  • public Set entrySet() mengembalikan paparan Set dengan semua kunci dan nilai.

Apa itu HashMap

Apakah HashMap? Ia ialah pelaksanaan antara muka Map<Key,Value> yang paling popular. Struktur data ini adalah berdasarkan prinsip pencincangan.

Prinsip utama kerja HashMap: pencincangan

Untuk memahami apa itu peta cincang dan cara ia berfungsi, mari kita bincangkan tentang fungsi pencincang dan cincang dahulu. Fungsi hash hanyalah fungsi dalam pengertian matematik. Jadi terdapat beberapa nilai input (objek, sekeping data) dan fungsi menukarnya menggunakan peraturan yang betul kepada nilai output - cincang. Selalunya cincang ialah nombor heksadesimal dengan panjang yang betul. Peraturan proses penukaran mungkin berbeza, tetapi ia tertakluk kepada prinsip berikut:
  1. Input tertentu (objek) mempunyai kod cincang tertentu.
  2. Jika dua objek adalah sama, kod cincang mereka adalah sama juga. Sebaliknya tidak benar.
  3. Jika kod cincang berbeza, objek pastinya tidak sama.
  4. Kadangkala objek yang berbeza boleh mempunyai kod cincang yang sama. Ia adalah peristiwa yang sangat tidak mungkin, dinamakan "perlanggaran" dan fungsi cincang kualiti yang baik harus meminimumkan kebarangkalian perlanggaran.
Di Java, setiap objek mempunyai kod cincang. Ia dikira dengan kaedah hashCode kelas Objek, kelas ibu bapa semua Objek Java. Biasanya, pembangun mengatasi kaedah ini untuk kelas mereka sendiri serta kaedah yang sama yang dikaitkan dengannya.

HashMap: cara ia berfungsi

Jadi Kelaskan HashMap<K,V> kerana setiap pelaksanaan Peta mengandungi kunci dan nilai. Ia menyimpan kunci menggunakan prinsip pencincangan. Di dalam pasangan nilai Kunci HashMap disimpan dalam "baldi", baldi ini bersama-sama membina "jadual", tatasusunan dalaman senarai terpaut dan saiz awalnya ialah 16. HashMap dalam Java menggunakan kod cincang kunci untuk menentukan baldi tempat pasangan kunci/nilai harus dipetakan: Ciri rumit HashMap ialah setiap sel (baldi) jadual [] menyimpan bukan sahaja satu pasangan tetapi beberapa. Ia tidak disimpan sebagai objek eksplisit (seperti LinkedList), tetapi sebagai rantaian tersirat. Rantaian itu dicipta kerana fakta bahawa setiap pasangan menyimpan pautan ke pasangan seterusnya. Iaitu, semua pasangan HashMap tersebar di 16 rantai. Apabila anda meletakkan pasangan baharu ke dalam jadual, cincangan kunci dipertimbangkan. Cincang ini bukan fungsi kod cincang yang dibina ke dalam objek utama. Ia dianggap berada dalam julat 0-15. Pasangan itu ditambahkan pada rantai pasangan yang disimpan dalam baldi dengan indeks cincang. Pendekatan ini memberikan kita pecutan carian. Semasa mencari pasangan dengan kunci, tidak perlu melalui seluruh jadual. Cincang kunci dipertimbangkan dan hanya rantaian yang disimpan dalam sel dengan indeks cincang diperiksa. Jika terdapat terlalu banyak pasangan dalam HashMap, rantaian menjadi terlalu panjang. Kemudian saiz tatasusunan bertambah, cincangan semua objek yang disimpan dikira semula, dan ia bertaburan di sepanjang rantai baharu.

Pengisytiharan HashMap

Jika anda pergi ke kod HashMap kelas anda akan menemui pengisytiharan seterusnya:
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
Di mana K ialah jenis kekunci yang diselenggara oleh peta ini dan V - jenis nilai yang dipetakan. Ini ialah contoh pengisytiharan HashMap dengan kunci Integer dan nilai String dalam kod anda:
HashMap<Integer, String> myHashMap = new HashMap<Integer, String>();

kaedah HashMap

Berikut ialah senarai kaedah HashMap.
  • Object get(Object key) mengembalikan nilai untuk kunci yang ditentukan;
  • Objek meletakkan(Kunci k, Nilai v) memasukkan pemetaan nilai kunci ke dalam peta;
  • Object remove(Object key) mengalih keluar pemetaan untuk kunci yang ditentukan daripada peta ini jika ada;
  • void clear() mengalih keluar semua pasangan nilai kunci daripada HashMap;
  • Klon objek() mengembalikan salinan cetek contoh HashMap ini tanpa mengklon kekunci dan nilai;
  • boolean containsKey(Objek kunci) mengembalikan benar jika kunci yang ditentukan ditemui dalam peta, palsu jika tidak;
  • boolean containsValue(Nilai Objek) mengembalikan benar jika kunci yang ditentukan ditemui dalam peta, palsu jika tidak;
  • boolean isEmpty() mengembalikan benar jika peta kosong, palsu jika tidak;
  • Set keySet() mengembalikan Set kekunci yang diambil daripada peta;
  • int size() mengembalikan kuantiti pemetaan nilai kunci;
  • Collection values() mengembalikan koleksi nilai peta;
  • Object remove(Object key) mengalih keluar pasangan kunci-nilai untuk kunci yang ditentukan;
  • void putAll(Peta m) menyalin semua elemen peta ke peta lain.

Contoh Java HashMap

Mari buat program dengan Contoh Java HashMap untuk menunjukkan cara ia berfungsi:
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Set;

public class HashMap {

   public static void main(String[] args) {

       {

           // HashMap declaration
           HashMap<Integer, String> myHashMap = new HashMap<Integer, String>();

           //Adding elements into HashMap
           myHashMap.put(7, "Johnny");
           myHashMap.put(8, "Ivy");
           myHashMap.put(1, "Rick");
           myHashMap.put(4, "Stan");
           myHashMap.put(3, "Kyle");

           //print out the map content using Iterator
           Set set = myHashMap.entrySet();
           Iterator iterator = set.iterator();
           while (iterator.hasNext()) {
               Map.Entry mapEntry = (Map.Entry) iterator.next();
               System.out.print("key: " + mapEntry.getKey() + " value: ");
               System.out.println(mapEntry.getValue());
           }
           System.out.println("get an element from myHashMap via key and print the value out:");
           System.out.println(myHashMap.get(8));
           //print out hashMap on standard way:
           System.out.println(myHashMap);

           // Get values based on key
           String var = myHashMap.get(2);
           //here we'll get null, we don't have such a key
           System.out.println("Value with key 2: " + var);
           var = myHashMap.get(7);
           System.out.println("Value with key 7: " + var);

           // Remove values based on key
           myHashMap.remove(4);
           System.out.println("myHashMap after removing element:");
           System.out.println(myHashMap);
           myHashMap.clear();
           System.out.println("myHashMap after total clearing:");
           System.out.println(myHashMap);
       }

   }
}
Hasil daripada menjalankan program:
key: 1 value: Rick
key: 3 value: Kyle
key: 4 value: Stan
key: 7 value: Johnny
key: 8 value: Ivy
get an element from myHashMap via key and print the value out:
Ivy
{1=Rick, 3=Kyle, 4=Stan, 7=Johnny, 8=Ivy}
Value with key 2: null
Value with key 7: Johnny
myHashMap after removing element:
{1=Rick, 3=Kyle, 7=Johnny, 8=Ivy}
myHashMap after total clearing:
{}

Peta Pokok

TreeMap dalam Java juga melaksanakan antara muka Map<Key,Value>, tetapi ia berdasarkan struktur data pokok Merah-Hitam. Pokok terdiri daripada "nod" dan garisan yang menghubungkan nod - dahan". Nod "akar" berada di bahagian atas pokok. Daripada akar, boleh ada dahan dan nod. Ia adalah struktur hierarki, anda mungkin fikirkan nod ini sebagai "anak" akar. Nod anak boleh mempunyai anak sendiri - nod bawah. Nod tanpa anak dipanggil "nod-akhir" atau "daun". Pokok binari ialah pokok, di mana setiap nod mempunyai sifar, satu , atau dua kanak-kanak. Pokok carian binari ialah struktur, di mana setiap nod dalaman menyimpan kunci, dan kadangkala nilai yang berkaitan, dan mempunyai dua subpokok yang dibezakan ("kiri" dan "kanan"). Pepohon carian perduaan pengimbangan diri ialah pepohon carian perduaan berasaskan nod yang secara automatik mengekalkan ketinggiannya (bilangan tahap maksimum di bawah akar) kecil dalam menghadapi sisipan dan pemadaman item sewenang-wenangnya. Pokok merah-hitam ialah pokok binari yang seimbang dengan sifat:
  • Setiap nod adalah sama ada merah atau hitam
  • Akar sentiasa hitam
  • Setiap daun ialah nod NIL (jenis kosong, null) dan ia berwarna hitam
  • Jika nod berwarna merah, anak-anaknya pasti hitam.
  • Setiap laluan mudah dari nod ke daun keturunan mengandungi bilangan nod hitam yang sama.

Ciri TreeMap

TreeMap menggunakan struktur data pokok untuk menyimpan kekunci sebagai nod dan mengisih kekunci menggunakan algoritma Pokok Merah-Hitam. Jadi, TreeMap menyimpan entrinya disusun mengikut susunan semula jadi kuncinya. Untuk nombor semula jadi adalah tertib menaik, untuk rentetan - susunan abjad. Anda boleh menggunakan pembanding jika anda perlu menukar logik pesanan. Menyusun objek dengan cara semula jadi merupakan kelebihan besar TreeMap, serta mencari beberapa objek menggunakan penapis dan keadaan yang berbeza.

Kaedah TreeMap

  • Object get(Object key) mengembalikan nilai kunci yang sepadan;
  • Object put(Object key, Object value) memasukkan pemetaan ke dalam peta;
  • Object remove(Object key) mengalih keluar pemetaan untuk kunci ini jika TreeMap mengandunginya;
  • boolean containsKey(Objek kunci) mengembalikan benar jika peta ini mengandungi pemetaan untuk kunci yang ditentukan;
  • boolean containsValue(Nilai objek) mengembalikan benar jika TreeMap memetakan satu atau lebih kunci kepada nilai yang ditentukan;
  • Object firstKey() mengembalikan kunci pertama pada masa ini dalam peta yang diisih;
  • Object lastKey() mengembalikan kunci terakhir pada masa ini dalam peta yang diisih;
  • void putAll(Peta peta) menyalin semua pemetaan dari peta yang ditentukan ke peta;
  • Set entrySet() mengembalikan paparan set pemetaan
  • int size() mengembalikan kuantiti pemetaan nilai kunci
  • Collection values() mengembalikan paparan koleksi nilai
  • Klon objek () mengembalikan salinan cetek TreeMap
  • void clear() mengalih keluar semua pemetaan daripada TreeMap
  • SortedMap headMap(Object key_value) mengembalikan paparan bahagian peta kurang daripada parameter key_value
  • Set keySet() mengembalikan paparan Set bagi kunci yang terkandung dalam peta pokok
  • SubPeta SortedMap(K fromKey, K toKey) mengembalikan paparan bahagian peta ini yang kuncinya terdiri daripada fromKey, inklusif, toKey, eksklusif
  • Object firstKey() mengembalikan kunci pertama daripada TreeMap.

Contoh TreeMap

import java.util.TreeMap;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;

public class TreeMapExample {

   public static void main(String args[]) {

       //TreeMap declaration
       TreeMap<Integer, String> myTreeMap = new TreeMap<Integer, String>();

       //put elements to TreeMap
       myTreeMap.put(1, "Stuart");
       myTreeMap.put(23, "Michael");
       myTreeMap.put(7, "Johnny");
       myTreeMap.put(5, "Ivy");
       myTreeMap.put(2, "Alex");

       //Display and print out myTreeMap using Iterator
       Set set = myTreeMap.entrySet();
       Iterator iterator = set.iterator();
       while (iterator.hasNext()) {
           Map.Entry myEntry = (Map.Entry) iterator.next();
           System.out.print("key: " + myEntry.getKey() + " value: ");
           System.out.println(myEntry.getValue());
       }
       //TreeMap printed in classical way
       System.out.println(myTreeMap);
       //removing an element with the key =2
       myTreeMap.remove(2);
       //myTreeMap after removing:
       System.out.println(myTreeMap);
   }
}
Hasil daripada menjalankan program:
key: 1 value: Stuart
key: 2 value: Alex
key: 5 value: Ivy
key: 7 value: Johnny
key: 23 value: Michael
{1=Stuart, 2=Alex, 5=Ivy, 7=Johnny, 23=Michael}
{1=Stuart, 5=Ivy, 7=Johnny, 23=Michael}

LinkedHashMap

LinkedHashMap ialah struktur data yang menggabungkan senarai terpaut dan peta cincang. Sesungguhnya, LinkedHashMap memanjangkan kelas HashMap dan melaksanakan antara muka Peta, tetapi apakah itu tentang senarai terpaut? Pengisytiharan LinkedHashMap:
Map <Integer, String> linkedHashMap = new LinkedHashMap <Integer, String>();
LinkedHashMap baharu ini mewarisi sifat daripada HashMap (seperti jadual, loadFactor, ambang, saiz, entrySet), juga mendapat dua sifat istimewa:
  • pengepala ialah ketua senarai berganda. Semasa permulaan, ia menunjukkan dirinya sendiri
  • accessOrder menunjukkan cara mendapatkan akses kepada elemen menggunakan iterator. Jika benar, mengikut urutan akses terakhir. Jika palsu, akses akan mengikut urutan elemen dimasukkan.
Senarai terpaut ini mentakrifkan susunan lelaran. Biasanya, ia adalah susunan pemasukan kunci ke dalam peta.

Kaedah LinkedHashMap

  • Object get(Object key) mengembalikan nilai yang dipetakan kekunci yang ditentukan, atau batal jika peta ini tidak mengandungi pemetaan untuk kunci
  • void clear() mengalih keluar semua pemetaan dari peta.
  • boolean containsKey(Objek kunci) mengembalikan benar jika elemen yang ditentukan dipetakan oleh satu atau lebih kekunci
  • boolean removeEldestEntry(Map.Entry eldest) mengembalikan benar jika peta mengalih keluar masukan sulungnya daripada peta
  • Set<Map.Entry<K,V>> entrySet() mengembalikan paparan Set bagi pemetaan yang terkandung dalam peta ini
  • void forEach(BiConsumer<? super K,? super V> action) melakukan tindakan yang diberikan untuk setiap entri dalam peta ini sehingga semua entri telah diproses atau tindakan itu mengeluarkan pengecualian.
  • Object getOrDefault(Object key, V defaultValue) mengembalikan nilai yang dipetakan oleh kunci yang ditentukan. Jika peta tidak mengandungi pemetaan untuk kunci mengembalikan defaultValue.
  • Set<K> keySet() mengembalikan paparan Set kekunci yang terkandung dalam peta
  • boolean removeEldestEntry(Map.Entry<K,V> eldest) mengembalikan benar jika peta ini harus mengalih keluar masukan sulungnya
  • void replaceAll(BiFunction<? super K,? super V,? memanjangkan fungsi V>) menggantikan setiap nilai entri dengan hasil menggunakan fungsi yang diberikan pada entri tersebut sehingga semua entri telah diproses atau fungsi itu membuang pengecualian.
  • Collection<v>values() mengembalikan paparan Koleksi nilai yang terkandung dalam peta

Contoh LinkedHashMap

import java.util.LinkedHashMap;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;
   public class HashLinkedListExample {
       public static void main(String args[]) {
           // LinkedHashMap Declaration
           LinkedHashMap<Integer, String> myLinkedHashMap =
                   new LinkedHashMap<Integer, String>();

           //Adding elements into LinkedHashMap
           myLinkedHashMap.put(7, "Johnny");
           myLinkedHashMap.put(12, "Rick");
           myLinkedHashMap.put(1, "Kyle");
           myLinkedHashMap.put(5, "Percy");
           myLinkedHashMap.put(85, "Sebastian");

           // Generate a Set of entries
           Set set = myLinkedHashMap.entrySet();

           // Display and print out the nodes  of LinkedHashMap
           Iterator iterator = set.iterator();
           while(iterator.hasNext()) {
               Map.Entry me = (Map.Entry)iterator.next();
               System.out.print("key: "+ me.getKey() +
                       " value: "+me.getValue()+"\n");
           }
           //print out HashLinkedMap on standard way:
           System.out.println(myLinkedHashMap);
           myLinkedHashMap.put(21, "Ivy");
           System.out.println(myLinkedHashMap);
           myLinkedHashMap.remove(12);
           System.out.println(myLinkedHashMap);
           myLinkedHashMap.put(12, "Ronny");
           System.out.println(myLinkedHashMap);
           myLinkedHashMap.put(1, "Stan");
           System.out.println(myLinkedHashMap);
       }
   }
Di sini kami mencipta LinkedHashMap baharu, menambah lima elemen, kemudian mencetaknya menggunakan iterator dan dengan cara klasik. Seperti yang anda lihat, LinkedHashMap mengekalkan susunan sisipan. Selepas itu kami memadamkan elemen daripada Peta kami, kemudian menambah yang baharu dan kemudian - satu lagi elemen dengan kunci, yang sudah ada pada peta. Ia menggantikan nilai lama yang dipetakan pada kunci ini. Hasil daripada menjalankan program:
key: 7 value: Johnny
key: 12 value: Rick
key: 1 value: Kyle
key: 5 value: Percy
key: 85 value: Sebastian
{7=Johnny, 12=Rick, 1=Kyle, 5=Percy, 85=Sebastian}
{7=Johnny, 12=Rick, 1=Kyle, 5=Percy, 85=Sebastian, 21=Ivy}
{7=Johnny, 1=Kyle, 5=Percy, 85=Sebastian, 21=Ivy}
{7=Johnny, 1=Kyle, 5=Percy, 85=Sebastian, 21=Ivy, 12=Ronny}
{7=Johnny, 1=Stan, 5=Percy, 85=Sebastian, 21=Ivy, 12=Ronny}

HashMap, TreeMap, LinkedHashMap Perbandingan

HashMap, TreeMap dan LinkedHashMap ialah pelaksanaan antara muka Peta. HashMap dan LinkedHashMap ialah struktur data yang mencincang kunci. TreeMap menggunakan susunan semula jadi kuncinya untuk mengatur pepohon carian. Pesanan:
  • HashMap tidak mengekalkan sebarang pesanan.
  • TreeMap mengisih entri dalam tertib menaik kekunci.
  • LinkedHashMap mengekalkan susunan sisipan.
Kekunci null:
  • HashMap dan LinkedHashMap membenarkan mempunyai satu kunci nol.
  • LinkedHashMap tidak membenarkan kekunci nol sekiranya kekunci menggunakan susunan semula jadi atau Comparator tidak menyokong perbandingan pada ley null.
Mari kita dapatkan contoh peta Java yang merangkumi ketiga-tiga pelaksanaan yang disemak dalam artikel ini:
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.TreeMap;

public class CompMapImpl {


    public static void main(String[] args) {
        HashMap<Integer, String> hashMap = new HashMap<>();
        TreeMap<Integer, String> treeMap = new TreeMap<>();
        LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
        hashMap.put(5, "Ivy");
        hashMap.put(null, "Joker");
        hashMap.put(1, "First");
        hashMap.put(2, "Kyle");
        hashMap.put(-2, "Paul");
        hashMap.put(3, "Sandy");


        treeMap.put(5, "Ivy");
        //treeMap.put(null,"Joker");
        treeMap.put(1, "First");
        treeMap.put(2, "Kyle");
        treeMap.put(-2, "Paul");
        treeMap.put(3, "Sandy");

        linkedHashMap.put(5, "Ivy");
        linkedHashMap.put(null, "Joker");
        linkedHashMap.put(1, "First");
        linkedHashMap.put(2, "Kyle");
        linkedHashMap.put(-2, "Paul");
        linkedHashMap.put(3, "Sandy");
        System.out.println("HashMap");
        System.out.println(hashMap);
        System.out.println("TreeMap");
        System.out.println(treeMap);
        System.out.println("LinkedHashMap");
        System.out.println(linkedHashMap);


        LinkedHashMap<String, String> linkedHashMap1= new LinkedHashMap<> ();
        linkedHashMap1.put(null, "Andy");
        System.out.println(linkedHashMap1);
    }
}
Berikut adalah hasil daripada menjalankan program ini:
HashMap
{null=Joker, 1=First, -2=Paul, 2=Kyle, 3=Sandy, 5=Ivy}
TreeMap
{-2=Paul, 1=First, 2=Kyle, 3=Sandy, 5=Ivy}
LinkedHashMap
{5=Ivy, null=Joker, 1=First, 2=Kyle, -2=Paul, 3=Sandy}
{null=Andy}
Seperti yang kita dapat lihat, susunan elemen dalam HashMap tidak jelas, dalam treeMap ia bergantung pada kekunci, dalam LinkedHashMap ia adalah mengenai susunan sisipan. Jika kami cuba meletakkan kunci null ke dalam linkedHashMap, kami akan mendapat NullPointerException, tetapi dalam linkedHashMap1, di mana kunci adalah String, kami boleh melakukannya. Peta cincang ialah pelaksanaan peta tujuan am yang terbaik. Ia menyediakan kelajuan carian maksimum, storan pantas dan operasi mendapatkan semula, tetapi anda harus ingat tentang susunannya yang huru-hara. Peta cincang yang dipautkan mewarisi kelebihan HashMap dan mendapat pesanan untuk kunci. Walau bagaimanapun, ia mengandungi linkedList, yang agak mahal dari segi ingatan. ia lebih perlahan daripada HashMap dalam mencari dan sedikit lebih perlahan untuk menambah/mengalih keluar kerana mengekalkan senarai terpaut. Peta pokok menyimpan kunci yang diisih dalam tertib menaik. Walau bagaimanapun, Untuk mengukuhkan apa yang anda pelajari, kami cadangkan anda menonton pelajaran video daripada Kursus Java kami
Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi