HashMap 3

java의 Equals and HashCode(feat. HashMap)

Equals and HashCode(feat. HashMap) 보통 Spring boot를 사용할 때에 class에서 equals랑 hashcode를 같이 정의하고는 한다. 그리고 lombok에는 아예 @EqualsAndHashCode 라는 애가 있어 두개를 같이 사용할수도 있다. 그럼 이녀석들이 무엇일까? Default 먼저 이런 class를 정의해 주자. 해당 class는 RyooChan의 intelligence와 look을 인자로 갖고 있다. 이런 식으로 Object를 가져와서 값이 동일한지를 검사해 준다. Test결과 두 객체는 서로 다르다. 참고로 저거 equals를 조금 공부해 봤으면 아니 얘는 값을 비교하는건데 왜 달라?? 라고 생각할 수 있을거같은데 Object를 equals를 비교하면 요..

이론 정리/java 2022.12.25

java hashmap의 시간복잡도에 관해서

HashMap은, Map인터페이스의 컬렉션 중 하나이다. 이 HashMap은 key-value로 하나의 key가 하나의 value를 갖도록 한다. 이전에 ArrayList와 LinkedList의 차이점에 대한 글을 작성한 적이 있다. 각각의 내용들에 대해서 생각해 보면, 두 자료구조 모두 값을 읽어오거나 변경할 때에 시간복잡도를 고려해줄 필요성이 있었다. 근데 이 HashMap은 값을 넣거나 변경할 때 모두 시간복잡도가 O(1)이다!! 이게 어떻게 가능할까? Put의 시간복잡도 HashMap의 동작 방식 위에서 설명하였듯 HashMap은 하나의 key가 하나의 value를 갖는다. 이 key를 찾아가기 위해서 어떠한 key가 입력되면 java에서는 이곳에 해시함수를 적용시켜 고유 index를 만든다. 예..

이론 정리/java 2022.12.25

java HashMap의 Thread-Safe이슈와 HashTable, ConcurrentHashMap

HashMap의 Thread-Safe이슈와 HashTable, ConcurrentHashMap Thread-Safe란? Thread-Safe란, 멀티 스레드 프로그램에서 어떤 객체나 함수 등이 여러 스레드로부터 동시에 접근이 이루어져도 문제 없이 실행이 가능한 것이다. 동기화(Synchronize)라고도 표현하며, 여러 쓰레드에서 작업이 이루어져도 데이터의 정합성이 유지되는 것이다. 멀티 스레드가 뭔데?? 먼저 스레드란 프로세스 내에서 일을 처리하는 세부실행 단위를 뜻한다. 그렇다면 멀티 스레드란, 하나의 프로세스를 여러 개의 스레드로 나누어 수행해주는 것이다. 즉, 하나의 프로그램이 여러 작업을 동시에 수행할 수 있도록 해주는 것이며 이를 통해 수행 능력을 향상시켜 주는 개념이다. HashMap에서 T..

이론 정리/java 2022.02.25