[Java] HashSet 을 파헤쳐보자.

HashSet은 Set 인터페이스를 구현하는 클래스로 내부적으로 HashMap 인스턴스의 지원을 받는다. GrepCode에 가서 HashSet을 찾아보자.  위와 같이 HashSet은 내부적으로 HashMap을 가지고 있다. 그렇기 때문에 대부분의 함수가 HashMap의 함수를 Wrapping 해놨다고 볼수 있다.  Iterator에 대해서 Iterator의 성능과 관련해서는 HashSet 인스턴스의 사이즈(number of elements) + 내부에 있는 HashMap 인스턴스의 capacity 의 합에 비례해서 시간이 필요하다고 한다. 때문에 만약… Read More

[Java] HashMap에 대한 정리.

뭐, 다들 아는 사실이겠지만, HashMap에 대해서 한번 더 정리를 하려고 한다. 필자는 Hashtable을 많이 쓰긴 하는데 HashMap에 대해서 정리를 하는 이유는 단연 성능때문이다. 스케일 아웃도 좋지만, 일정 수준이상의 성능 최적화 작업은 늘 필요하기 마련이기 때문이다.  *HashMap * – 일단 둘다 key-value 형태를 지원하는 Collection이다. (dictionary) – 크게 다른 점은 2가지 : Unsynchronized 와 null 의 허용이다.  *1. Unsynchronized * – 동기화의… Read More