java HashMap 용량 확장 상세 정보 및 실례 코드

HashMap 확장
선언:
HashMap의 크기가 (용량 * 마운트 인자) 보다 클 때 용량 확장 작업을 촉발합니다. 이것은 대가가 적지 않은 작업입니다.
왜 용량을 늘려야 합니까?HashMap의 기본 용량은 16입니다. 요소가 HashMap에 계속 추가됨에 따라hash 충돌이 발생할 확률이 더욱 높고 통마다 대응하는 체인 시계가 더 길어집니다.
이렇게 하면 조회의 성능에 영향을 줄 수 있다. 왜냐하면 매번 체인 테이블을 훑어보고 대상이 같은지 원소를 찾을 때까지 비교해야 하기 때문이다.
검색 성능을 향상시키기 위해hash 충돌을 줄이고 원소의 키를 최대한 고르게 분포할 수 있습니다.
확장 기본점
로드 인자 기본값은 0.75입니다.

static final float DEFAULT_LOAD_FACTOR = 0.75f;
용량의 기본값은 16입니다.

 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //  16
HashMap은 생성할 때 용량과 불러오는 인자를 지정할 수 있는 구조 파라미터를 제공합니다.

 public HashMap(int initialCapacity, float loadFactor)
기본적으로 HashMap의 크기가 16*0.75=12보다 크면
동시에 모든 Entry(또는 통) 안에 최소한 하나의 원소가 있을 때 용량을 확대한다.

 if ((size >= threshold) && (null != table[bucketIndex])) {
      resize(2 * table.length);
      hash = (null != key) ? hash(key) : 0;
      bucketIndex = indexFor(hash, table.length);
}
용량을 늘릴 때 용기 용량이 배로 늘어난다

 resize(2 * table.length);
확장할 때 원소의 수조를 다시 계산해야 한다
1. 새 Entry 배열 재할당
2. 원래 원소의 새 수조에 있는 하표를 다시 계산한다(자원 소모량 비교)
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기