기록하는 개발자

Collection : List, Set, Map 본문

학습 노트/기본 개념 정리

Collection : List, Set, Map

hannah1009 2021. 12. 16. 18:13
728x90

Collection : 다수의 데이터를 다루기 위한 자료구조를 표현하고 사용하는 클래스의 집합

 

1. List : 순서 있음, 데이터 중복 있음, resizable-array(용량 자동 증가)

- Method

boolean add(E e)

void add(int i, E e)

E set(int i, E e)

boolean contains(Object o)

E get(int i)

boolean isEmpty()

int size()

void clear()

E remove(int i)

boolean remove(Object o)

 

2. Set : 순서 없음, 데이터 중복 없음

- Set -Extends-> Sorted Set -Extends-> Navigable Set -Extends-> Treeset

- Method

add(e)

addAll(Collection)

clear()

contains(e)

containsAll(Collection)

hashCode()

isEmpty()

iterator()

remove(e)

removeAll(Collection)

retainAll(Collection) // 리턴 false, true

size()

toArray()

 

3. Map : (Key, Value) pair, Key 중복 가능, Value 중복 없음

- Method

put(e)

get(i)

remove(e)

기본 메서드 중복 사용

 

++ HashMap vs HashTable

키나 값에 null 저장 가능 여부 O X
여러 쓰레드 안전 여부 X O

 

++ TreeMap : Key 기준으로 정렬

 

4. ArrayList <-> LinkedList + 예시, 속도 비교

- ArrayList : 검색이 빠름, 순차적 배열, 객체 추가-삭제 성능이 우수

- LinkedList : 배열의 중간 위치에 추가 -> 크기 조정, 인덱스 업데이트 X -> 더 빠름, 앞 뒤 두개를 참조 저장하기 때문에 더 많은 메모리 영역을 차지

 

5. Array <-> ArrayList + 예시, 속도 비교

가장 큰 차이점은 길이 조정 가능 여부

Array는 고정 길이 -> 정해진 길이의 배열을 모두 채우면 새로운 데이터를 추가 하고 싶을 경우 배열을 만들어 주어야 함

ArrayList 가변 길이 -> 재부적으론 배열로 구성되어 있음, Default 10이나 최적화로 인해 막 생성하면 0개의 사이즈, 편리하지만 Array보다 느리기때문에 코테나 알고리즘 풀때는 Array 사용 권장

 

Comments