HashMap

    Hashtable에 관해서

    개요 HashMap과 비슷한 Collection이지만, Thread-safe 한 특징이 있다. Thread-safe 하게 동작을 보장하려면 여러가지 방법이 있지만, 그 중 가장 성능이 안좋은 synchronized block을 통해 객체 lock을 걸어 동기화를 보장하는 방법을 사용하고 있다. 한번 Hashtable을 살펴보자. public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { } 특이하게 Dictionary 라는 abstract class를 상속받고 있다. 다른데 쓰는곳이 있나해서 찾아보니, Hashtable에서만 사용하고 있다. 구조를 보다보니 일반적인 Map 과 특징이 비슷해서 Map에..

    HashMap 에 대하여

    개요 Java의 HashMap 에 대한 공부. 자주 쓰지만, 실제로 어떻게 동작하는지에 대한 이해가 필요하고 Java에서 뿐만 아니라, NoSQL 등의 경우에도 사용되는 Hash의 개념과 Map의 개념에 대해 알아보자. Hash Hash 는 특정 input 값이 주어졌을 때 항상 동일값을 보장해주는 값이다. 주로 SHA256 MD5등과 같은 해시 알고리즘에 의해 많이 알려져 있다. 차이점이라고 하면 Hash를 할 때 충돌(collision)이 발생하게 되는데, 그런 충돌을 얼마나 더 효율적으로 방지할 것인가에 대한 정도가 되겠다. Java에서 사용하는 String 클래스의 해시 함수를 살펴보자. Hash != HashCode Hash : 해시 함수 HashCode : 해시 해서 나온 값을 정수화 시킨 것..