Rumah >Java >javaTutorial >Adakah HashMap Java's Guarantee Retrieval Order?

Adakah HashMap Java's Guarantee Retrieval Order?

Susan Sarandon
Susan Sarandonasal
2024-12-14 08:13:10427semak imbas

Does Java's HashMap Guarantee Retrieval Order?

Adakah Pesanan Pengambilan Peta Hash Dipelihara?

Di Java, HashMaps menggunakan algoritma khusus untuk menyimpan dan mendapatkan data, membuatkan sesetengah pengguna tertanya-tanya tentang susunan nilai diambil semula. Sambil kami menyelidiki coretan kod, kami akan menemui kebenaran di sebalik susunan pengambilan HashMap.

import java.util.HashMap;

public class HashMapExample {
   public static void main(String[] args) {
       HashMap<Integer, String> hashmap = new HashMap<Integer, String>();
       hashmap.put(1, "apple" );
       hashmap.put(2, "lemon" );
       hashmap.put(3, "orange" );
       hashmap.put(4, "banana" );
       hashmap.put(5, "litchi" );
       hashmap.put(6, "mango" );
       hashmap.put(7, "papaya" );

       System.out.println(hashmap.size());

       for (String key : hashmap.values()) {
           System.out.println(key);
       }
   }
}

Output:

7
apple
lemon
orange
banana
litchi
mango
papaya

Gelagat Mengejutkan :

Anehnya, nilainya diambil dalam susunan yang sama mereka dimasukkan. Walau bagaimanapun, pemerhatian ini mungkin tidak selalunya benar.

Kebenaran:

Menurut HashMap Javadoc, tiada jaminan bahawa pesanan pengambilan akan kekal konsisten dari semasa ke semasa . Ini bermakna pesanan pengambilan boleh berubah sewenang-wenangnya.

Perlu Pesanan Konsisten?

Jika pesanan yang konsisten adalah penting, seseorang boleh memilih struktur data alternatif seperti LinkedHashMap atau TreeMap .

  • LinkedHashMap: Mengekalkan sisipan atau pesanan akses (LIFO)
  • TreeMap: Mengekalkan susunan perbandingan berdasarkan kekunci

Atas ialah kandungan terperinci Adakah HashMap Java's Guarantee Retrieval Order?. 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