"Java의 사고"4 판 P519 페이지 약점 해시 맵 챕터 읽기 노트
약한 하쉬 맵은 약점을 절약하는 데 사용됩니다. yunxun 쓰레기 수집기라는 구조는 키와 값을 자동으로 정리합니다.
키와 값을 추가 할 때 매핑은 자동으로 약한 회의로 포장됩니다.
JDK 소스 코드를 참조하십시오.
public v put (k key, v value) {object k = masknull (key); int h = hash (k); enther <k, v> [] tab = gettable (); int i = indexfor (h, tab.length); for (enther <k, v> e = tab [i]; e! = null; e = e.next)))) {if (k == E.HASH & & eq (k, e.get)). OldValue = a.value; if (value! = OldValue) e.value = value; return OldValue;}} modCount ++; Entry <k, v> e = 탭 [i]; 탭 [i] = new Entry <> (k, value, queue, h, e); if (++ size> = threshold) resize (tab.length * 2); new Entry<>(k, value, queue, h, e) ReferenceQueue 사용합니다
/ ** * 지우기 약점에 대한 참조 큐 */ 개인 최종 참조 Queue <bood> queue = new ReferenceQueue <> ();
new Entry 의 생성자를 클릭하고 슈퍼의 최상위 레벨을 입력하십시오.
/** * 주어진 객체를 지칭하고 주어진 대기열에 등록되는 새로운 약한 참조를 만듭니다. * * @param 참조 개체 새로운 약한 참조는 * @param q 참조가 등록 될 대기열을 참조합니다. }
여기서 new Entry 또한 약한 객체를 구성합니다
시험:
package com.anialy.test.data_structure.map; import java.util.iterator; import java.util.weakhashmap; public class wmakhashmaptest {public static void main (string [] args) {약점 wmap = new lecomhashmap <string, object> (); str = 0]; i <size; i) {String key = integer.toString (i); String value = integer.tostring (i); // 3 If (i % 3 == 0) str [i] = key; wmap.put (key, value);} system.gc (); iterator iter = wmap.keyset (). iterator (); while (iter.hasnext ()) {system.out.println (wmap.get (iter.next ());}}}String []가 약한 참조를 유지하기 때문에 부분적으로 출력은 모두 간격 3이기 때문에 부분적으로 예상 될 수 있습니다.
위의 내용은 Java 프로그래밍의 약한 해쉬 맵 인스턴스 분석에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!