Meneroka Perbezaan antara HashMap, LinkedHashMap dan TreeMap
Di Java, ketiga-tiga struktur data ini menawarkan pendekatan yang berbeza-beza untuk mengatur dan mengakses data, masing-masing dengan uniknya ciri.
HashMap:
HashMap mengutamakan kecekapan, membolehkan pengambilan semula dan penyimpanan data dengan pantas. Ia tidak mengekalkan sebarang susunan tertentu dan sebaliknya menumpukan pada melaksanakan jadual cincang untuk menyediakan prestasi masa malar untuk kebanyakan operasi.
LinkedHashMap:
LinkedHashMap menggabungkan faedah daripada HashMap dan LinkedList, mengekalkan susunan sisipan elemen. Ia menggunakan struktur senarai dua pautan, membolehkan akses pantas dan tersusun kepada data.
TreeMap:
TreeMap menawarkan antara muka yang diisih, mengekalkan kekunci dalam menaik pesanan. Ia bergantung pada struktur data pokok Merah-Hitam, yang membolehkan kerumitan masa logaritma untuk operasi seperti mencari, memasukkan dan memadamkan elemen.
Hashtables dalam Java:
Hashtables, tidak lagi biasa digunakan, mendahului HashMap di Java dan berkongsi banyak persamaan, iaitu pelaksanaan berasaskan hash mereka. Mereka disegerakkan, memastikan keselamatan benang, tetapi dengan kos overhed tambahan.
Contoh:
Pertimbangkan coretan berikut, yang menggambarkan perbezaan dalam output untuk ketiga-tiga struktur:
Map<String, String> m1 = new HashMap<>(); SortedMap<String, String> sm = new TreeMap<>(); LinkedHashMap<String, String> lm = new LinkedHashMap<>(); // Insert elements into all three maps m1.put("map", "HashMap"); m1.put("schildt", "java2"); m1.put("mathew", "Hyden"); m1.put("schildt", "java2s"); sm.put("map", "TreeMap"); sm.put("schildt", "java2"); sm.put("mathew", "Hyden"); sm.put("schildt", "java2s"); lm.put("map", "LinkedHashMap"); lm.put("schildt", "java2"); lm.put("mathew", "Hyden"); lm.put("schildt", "java2s"); // Output the keysets and values from each map print(m1.keySet()); print(m1.values()); print(sm.keySet()); print(sm.values()); print(lm.keySet()); print(lm.values());
Output:
HashMap (tidak tersusun):
[map, schildt, mathew, schildt] [HashMap, java2, Hyden, java2s]
TreeMap (diisih):
[map, mathew, schildt, schildt] [TreeMap, Hyden, java2, java2s]
LinkedHashMap (sisipan-tertib):
[map, schildt, mathew, schildt] [LinkedHashMap, java2, Hyden, java2s]
Atas ialah kandungan terperinci HashMap, LinkedHashMap dan TreeMap dalam Java: Apakah Perbezaan Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!