Study/Java

    [Java] HashMap remove, 객체, 참조

    코딩테스트 공부를 하다가 문득 궁금증이 생겼습니다. 하나의 객체를 생성하여 HashMap에 다가 담아놓고, 이를 get으로 불러서 다른 자료구조 예를들어 ArrayList에다가 추가를 했을 때, HashMap에서 해당 객체를 remove 한다면 ArrayList에 있는 객체도 함께 삭제가 되지 않을까? 하는 궁금증 이었습니다. 그래서 테스트를 진행해봤습니다. 일단 테스트에 사용할 클래스를 하나 만들어 주었습니다. static class Test{ int val; public Test(int val) { this.val = val; } @Override public String toString() { final StringBuilder sb = new StringBuilder("Test{"); sb.app..

    [Java] java에서 동기, 비동기란 무엇인가?

    [Java] java에서 동기, 비동기란 무엇인가?

    요즘 자료구조를 공부하는데 계속해서 나타나는 단어가 있습니다. 그게 바로 동기화 라는 단어인데 굉장히 유사한 기능을 가진 두 가지의 자료구조간의 차이점이 무엇인가 라고 찾아보았을 때 동기화 지원여부가 차이점인 경우가 종종 있었습니다. 여기에 포함되는 것이 ArrayList와 Vector, StringBuffer와 StringBuilder, HashMap과 HashTable의 경우가 제가 동기화 라는 단어를 접한 경우입니다. 각각의 차이점이 동기화 지원 여부라는 것은 이해를 하겠는데 그 동기화라는 것이 뭔지에 대해서 확실하게 이해를 하고 있지 않으니 자꾸 찝찝한 기분이 들었습니다. 그래서 정리를 해보려고 글을 써보기 시작했습니다. 일단 동기화를 이해하기 위해서는 쓰레드(Thread)라는 단어를 알아야 합니..

    [Java] java의 버전에 대해서 생각

    [Java] java의 버전에 대해서 생각

    저는 프로젝트를 진행 할 때에 막연하게 java 8은 너무 오래 된 버전 같기도 하고 java 버전 중에 LTS 버전이 무언가 좋다고 들은 것 같았기 때문에 java 8 다음의 LTS 버전인 java 11을 사용하고 있었습니다. 그리고 최근 보았던 면접에서 사용하고 있는 java 버전에 대한 질문을 받은 적이 있습니다. 답변은 java 11버전을 사용하고 있다고 하였는데 그렇다면 java 11버전이 되며 바뀐점이나 특징에 대한 연속 질문이 있었고, 제대로 답변을 하지 못한채 면접이 흘러간 경험이 있습니다. 이후 java 버전에 대해서 알아보기 시작했고 그 내용을 제가 알게된 것과 느낀 점을 적어보게 되었습니다. java는 현재 글을 작성하는 2022년 2월 10일 기준 17(LTS) 버전이 나온 상태이며..