ArrayList의 add()로 보는 동적 복사 과정
·
👶🏻 CS/Data Structure
add()public boolean add(E e) { modCount++; add(e, elementData, size); return true; }private void add(E e, Object[] elementData, int s) { if (s == elementData.length) elementData = grow(); elementData[s] = e; size = s + 1; } 처음 add(E e)메서드를 호출하게 되면 오버로딩된 add(e, elementData, size)를 호출한다.이 메서드에는 추가할 데이터(e), 현재 배열(elementData), 배열의 현재 크기(size)가 전달된다. 현재 배열 크기..
HashMap(구현 방식, 해싱, 해시 함수, 해시 충돌)
·
👶🏻 CS/Data Structure
해싱이란 무엇인가?데이터를 키(key)와 값(value) 형태로 저장하는 경우, 키를 입력받아 특정 위치를 계산하는 과정을 해싱이라고 한다.이때 사용되는 함수가 해시 함수(Hash Function)이며, 해시테이블의 키 값으로 레코드가 저장되어 있는 주소(혹은 색인)를 산출하는 함수이다.함수의 출력값을 해시 값(Hash Value) 또는 해시 코드(Hash Code)라고 부른다.  HashMap의 구조와 작동 원리HashMap은 데이터를 키-값 쌍으로 저장하는 자료구조로 내부적으로 배열과 연결 리스트를 조합하여 구현된다. 데이터 저장의 기본 구조HashMap은 데이터를 저장하기 위해 배열을 사용한다.이 배열의 각 위치를 버킷(Bucket)이라고 부르며, 해시 함수가 반환한 값을 기반으로 데이터가 특정 버..