Rumah >Java >javaTutorial >HashMap, LinkedHashMap dan TreeMap dalam Java: Apakah Perbezaan Utama?

HashMap, LinkedHashMap dan TreeMap dalam Java: Apakah Perbezaan Utama?

Linda Hamilton
Linda Hamiltonasal
2024-12-18 07:57:10253semak imbas

HashMap, LinkedHashMap, and TreeMap in Java: What are the Key Differences?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn