Rumah  >  Artikel  >  Java  >  Kerja dalaman HashMap di Jawa

Kerja dalaman HashMap di Jawa

WBOY
WBOYke hadapan
2023-08-28 13:37:461304semak imbas

Kerja dalaman HashMap di Jawa

Fungsi 'hashCode' digunakan untuk mendapatkan kod cincang objek dalam Java. Ini adalah objek Objek superclass. Ia mengembalikan memori yang dirujuk oleh objek sebagai integer. Ia adalah fungsi asli, yang bermaksud kaedah tidak boleh digunakan secara langsung di Jawa untuk mendapatkan rujukan kepada objek.

Untuk meningkatkan prestasi HashMap, sila gunakan hashCode() dengan betul. Pada asasnya, fungsi ini digunakan untuk mengira baldi dan nilai indeks. Begini cara ia ditakrifkan -

public native hashCode()

Sekarang kita menyebut "baldi", adalah penting untuk memahami maksudnya. Ia adalah elemen yang digunakan untuk menyimpan nod. Terdapat lebih daripada dua nod dalam baldi. Nod boleh disambungkan menggunakan struktur data senarai terpaut. Kapasiti peta hash boleh dikira dengan baldi dan faktor beban.

Capacity = number of buckets * load factor

Fungsi "equals" digunakan untuk menyemak kesamaan antara dua objek. Ia juga diberikan oleh Objek superclass. Fungsi ini boleh ditindih dalam kelas tersuai dengan menyediakan pelaksanaan tersuai. Fungsi ini mengembalikan benar atau salah bergantung pada sama ada dua objek yang dipersoalkan adalah sama.

Jana nilai indeks supaya saiz tatasusunan tidak terlalu besar, sekali gus mengelakkan outOfMemoryException. Formula untuk mencari indeks tatasusunan ialah -

Index = hashCode(key) & (n-1) – Here n refers to number of buckets.

Mari kita lihat contoh -

Contoh

Demonstrasi Langsung

import java.util.HashMap;
class hash_map{
   String key;
   hash_map(String key){
      this.key = key;
   }
   @Override
   public int hashCode(){
      int hash = (int)key.charAt(0);
      System.out.println("The hash code for key : " + key + " = " + hash);
      return hash;
   }
   @Override
   public boolean equals(Object obj){
      return key.equals(((hash_map)obj).key);
   }
}
public class Demo{
   public static void main(String[] args){
      HashMap my_map = new HashMap();
      my_map.put(new hash_map("This"), 15);
      my_map.put(new hash_map("is"), 35);
      my_map.put(new hash_map("a"), 26);
      my_map.put(new hash_map("sample"), 45);
      System.out.println("The value for key 'this' is : " + my_map.get(new hash_map("This")));
      System.out.println("The value for key 'is' is: " + my_map.get(new hash_map("is")));
      System.out.println("The value for key 'a' is: " + my_map.get(new hash_map("a")));
      System.out.println("The value for key 'sample' is: " + my_map.get(new hash_map("sample")));
   }
}

Output

The hash code for key : This = 84
The hash code for key : is = 105
The hash code for key : a = 97
The hash code for key : sample = 115
The hash code for key : This = 84
The value for key 'this' is : 15
The hash code for key : is = 105
The value for key 'is' is: 35
The hash code for key : a = 97
The value for key 'a' is: 26
The hash code for key : sample = 115
The value for key 'sample' is: 45

Kelas bernama "hash_map" mentakrifkan rentetan dan konstruk Ini ditindih oleh fungsi lain yang dipanggil "hashCode". Di sini, nilai kunci hashmap ditukar kepada integer dan kod hash dicetak. Seterusnya, fungsi "sama" ditindih dan menyemak sama ada kunci itu sama dengan kunci peta cincang. Demo Kelas mentakrifkan fungsi utama di mana tika baharu HashMap dicipta. Elemen ditambah pada struktur ini menggunakan fungsi "put" dan dicetak pada konsol.

Atas ialah kandungan terperinci Kerja dalaman HashMap di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam