cari

Rumah  >  Soal Jawab  >  teks badan

java - Keraguan tentang indexFor(int h, int length) dalam HashMap

 static int indexFor(int h, int length) {
        // assert Integer.bitCount(length) == 1 : "length must be a non-zero power of 2";
        return h & (length-1);
    }

HashMap akan mencincang nilai cincang kunci dan saiz tatasusunan Entri[] untuk mendapatkan kedudukan subskrip tatasusunan Entri saya baru mengetahui semasa penyahpepijatan bahawa terdapat dua kekunci yang berbeza (dengan nilai cincang yang berbeza), tetapi indeks yang diperolehi melalui indexFor Subskrip adalah sama, yang bermaksud bahawa dua nilai dengan nilai kunci yang berbeza dan nilai hash yang berbeza dirangkai bersama untuk membentuk senarai terpaut Saya masih ingat membaca artikel yang ditulis oleh orang lain sebelum ini, dan semuanya berkata bahawa nilai hash adalah sama, tetapi nilai utama adalah berbeza akan membentuk senarai terpaut, tetapi dalam penyahpepijatan sebenar, saya dapati hasil yang berbeza

迷茫迷茫2790 hari yang lalu711

membalas semua(1)saya akan balas

  • PHP中文网

    PHP中文网2017-05-17 10:01:13

    Object (key) -> hashCode -> index
    

    Objek yang berbeza mungkin mempunyai hashCode yang sama (yang seterusnya mestilah berbeza, melainkan hashCode atau equals ditakrifkan salah );
    hashCode yang berbeza mungkin mempunyai indeks yang sama (yang seterusnya mestilah berbeza), dan hanya selepas itu senarai terpaut akan terbentuk. Object可能有相同的hashCode(反过来一定不同,除非hashCodeequals定义错了);
    不同的hashCode可能有相同的index(反过来一定不同),这时才会形成链表。

    这里的hashCode可能跟你看到的某些文章的hash

    hashCode di sini mungkin tidak mempunyai maksud yang sama dengan hash dalam beberapa artikel yang anda telah lihat. 🎜

    balas
    0
  • Batalbalas