Rumah  >  Soal Jawab  >  teks badan

java - Apakah peranan kaedah afterNodeInsertion dalam HashMap?

Persekitaran: jdk1.8
Masalah: Semasa mempelajari HashMap, saya mendapati kaedah afterNodeInsertion dipanggil pada penghujung kaedah putVal

    ...
    ++modCount;
    if (++size > threshold)
        resize();
    afterNodeInsertion(evict);
    return null;

Saya mencari kaedah afterNodeInsertion sekali lagi dan mendapati ia dipanggil di banyak tempat, tetapi pelaksanaannya adalah

    void afterNodeInsertion(boolean evict) { }

Kaedah kosong? ? Ingin tahu apakah kaedah ini?

仅有的幸福仅有的幸福2713 hari yang lalu895

membalas semua(1)saya akan balas

  • 淡淡烟草味

    淡淡烟草味2017-05-17 10:05:41

    // Callbacks to allow LinkedHashMap post-actions
    void afterNodeAccess(Node<K,V> p) { }
    void afterNodeInsertion(boolean evict) { }
    void afterNodeRemoval(Node<K,V> p) { }
    

    Malah, telah disebut dalam kod sumber bahawa ketiga-tiga kaedah ini semuanya untuk mewarisi perkhidmatan kelas LinkedHashMap HashMap. HashMapLinkedHashMap类服务的。

    LinkedHashMapHashMap 的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用 LinkedHashMap

    LinkedHashMap中被覆盖的afterNodeInsertion

    LinkedHashMap ialah subkelas HashMap, yang mengekalkan susunan sisipan Jika susunan output perlu sama dengan susunan input, kemudian gunakan LinkedHashMap . 🎜
    🎜Kaedah afterNodeInsertion yang diganti dalam LinkedHashMap digunakan untuk memanggil semula dan mengalih keluar objek terawal yang diletakkan dalam Map🎜
    void afterNodeInsertion(boolean evict) { // possibly remove eldest
        LinkedHashMap.Entry<K,V> first;
        if (evict && (first = head) != null && removeEldestEntry(first)) {
            K key = first.key;
            removeNode(hash(key), key, null, false, true);
        }
    }

    balas
    0
  • Batalbalas