[JAVA] Map, List

JeaHyuck·2021년 9월 17일
0
post-thumbnail

HashMap

Key와 Value로 이루어진 순서가 없는 Entry 배열

TreeMap

HashMap과 다르게 TreeMap은 정렬이 되어있는데

정렬 기준은 “숫자 > 알파벳 대문자 > 알파벳 소문자 > 한글” 이다.

LinkedHashMap

LinkedHashMap으로 구현된 Map은 데이터의 '입력된 순서'를 기억한다.

이전노드와 다음 노드값을 내부적으로 가지고있다.

ArrayList

ArrayList는 List 컬렉션 인터페이스를 구현한 클래스이다. List 컬렉션처럼 인덱스로 객체를 관리한다. 일반 배열과 ArrayList는 인덱스로 객체를 관리한다는 점에서 동일하지만, 크기를 동적으로 늘릴 수 있다는 점에서 차이점이 있다.

Vector

Vector는 ArrayList와 동일한 내부 구조를 가지고 있다. Vector 객체를 생성하기 위해서는 저장할 타입을 지정해야 한다. ArrayList와 차이점으로는 Vector 클래스는 동기화된(synchronized) 메서드로 구성되어 있다. 그렇기 때문에 멀티 스레드 환경에서 안전하게 객체를 추가, 삭제할 수 있다. 즉, 스레드에 안전하다(Thread Safe). 다만 동기화되어 있기 때문에 ArrayList 보다는 객체를 추가, 삭제하는 과정은 느릴수 밖에 없다. 안전성을 추구하는데 있어서 속도를 포기한 트레이드 오프(trade off)이다.

LinkedList

LinkedList는 List 구현 클래스이다. 내부 구조는 ArrayList와 다르다. ArrayList에는 내부 배열에 객체를 저장해서 인덱스로 관리하지만, LinkedList는 인접 참조를 링크해서 체인처럼 관리한다. 그렇기 때문에 LinkedList에서 특정 인덱스의 객체를 제거하게 되면, 제거되는 인덱스의 앞 뒤 링크만 변경되고 나머지 링크는 변경되지 않는다.

ArrayList는 제거되는 인덱스를 기준으로 뒤에 있는 객체가 한칸씩 이동 했었던 점과 차이가 있다. 이러한 차이로 인해서 객체를 삽입, 삭제하는 로직에 있어서 ArrayList보다 LinkedList를 사용할 때 좋은 성능이 나온다.

profile
기억보단 기록을

0개의 댓글