[CS 문답] Java7 이전의 HashTable과 Java8 이후의 HashMap의 차이는 무엇인가요?


[CS 문답] Java7 이전의 HashTable과 Java8 이후의 HashMap의 차이는 무엇인가요?

Java 7이전의 HashTable, 8이후의 HashMap JAVA 7 이전에는 해쉬충돌이 발생했을때 seperated chainig 기법을 활용하여 linked list로 관리. N개의 원소가 모두 한 hash값을 가질때, 삽입, 삭제, 조회에 O(N)임. 리스트를 모두 돌아야 하기 때문에. Thread-Safe함. JAVA 8부터는 자료의 개수가 8개가 넘어가면 Tree로, 6개보다 줄어들면 다시 list로 바꾸어 관리함. 임계값이 연속적(6개, 7개 또는 7개, 8개)이지 않은 이유는 같은 버켓에 값이 추가-삭제-추가-삭제 될때 계속 list-tree-list-tree로 바뀌는 것을 막기 위함. self-balancing binary search tree를 활용함. N개의 원소가 모두 한 hash값을 가져도, 트리 기반이므로 O(logN)에 연산이 가능. Thread-Safe하지 않음. JAVA 8이후의 HashMap은 ThreadSafe하지 않으므로, Collections....



원문링크 : [CS 문답] Java7 이전의 HashTable과 Java8 이후의 HashMap의 차이는 무엇인가요?