back-end-study / effective-java

🔥 이펙티브 자바 스터디
42 stars 4 forks source link

[Item29] p174 HashMap같은 제네릭타입은 성능목적으로 배열을 사용하기도한다 #45

Open youngreal opened 1 year ago

youngreal commented 1 year ago

구체적으로 어떤걸 말하는걸까요?? 제가 생각나는건 해시충돌시 연결리스트나 트리를 사용하는것뿐인데.. 다른 논지인것같다는 생각이 들어서 한번 올려봅니다..

okeydokey commented 1 year ago

저는 단순히 List 와 Array의 성능에 대해 얘기했다고 생각했는데 (https://stackoverflow.com/questions/716597/array-or-list-in-java-which-is-faster) HashMap을 보니 내부 구현에 Node<K,V>[] table; 를 사용하고 있고 get put 시 탐색 시간복잡도 O(1)를 위해(충돌 처리는 별도..) 배열을 사용했다는 의미로 해석되네요. (버킷 언급하셨던거 같은데 맞는거 같아요!) https://anmolsehgal.medium.com/java-hashmap-internal-implementation-21597e1efec3