바닥부터 시작하는 프로그래밍/국비JAVA

20일차(제너릭<>,컬렉션 프레임워크 List, Set, Map)

예얀 2024. 4. 1. 16:52

 

ArrayList (List) , HashMap(Map) 중요!!!

(List)         

배열 = 크기가 정해졌을때

LinkedList = 크기가 정해져있지 않을때

 

중간에 값을 삽입하는경우, 값이 삭제하는 경우 = LinkedList 

 

 

List계열 

1. 순서가 존재한다.(특징)

LinkedList 최악의 단점 : get()메서드 객체를 찾아오는게(접근) 너무너무너무 느림!!

ArrayList는 접근속도는 무엇보다 빠름!!

 

Queue : 데이터가 들어온 순서대로 저장되고, 데이터가 제거될 때는 먼저 들어온 데이터부터 제거되는 자료 구조

선입선출(First-In-First-Out, FIFO)

INFO - 
LILO - 

 

 

Stack - 맨마지막에 생성된게 젤먼저 제거됨(그래서 스택)

퍼스트인, 라스트아웃

FILO 
LIFO

 

 

 

배열 최고의 장점

메모리가 물리적으로 붙어있다보니

인덱스를 활용한 메모리에 접근하는 속도 최상

 

배열의 단점
1. 값의 크기가 지정되어있어서 넘겨서 저장불가

2. 값의 삽입 삭제시 밀어넣기 밀리기로 되어서 느리다.

3. 너무 크게 만들면 불필요한 메모리 생성

 

오른쪽 링크담는공간 왼쪽 진짜 데이터 담는공간??..

 

크기가 정의될 필요가없다. 

메모리 추가하겠다 = 필요한 메모리 생성

 

6번째줄 인스턴스 생성시

 

 

 

 

28번째줄 주석참고
여기서 트레를 삭제하고싶을때 75번째줄

한조에서 메르시로 바로 연결해버리는거임 트레 사라지게되면 이전값 찾을려고 -1하는것임

 

set 값의 탐색속도 빠름
Treeset

Set 컬렉션은 저장순서 유지X (순서가없다. 어떤것부터 넣었는지 모룸~)

객체 중복해서 저장X

하나의 null만 저장 

값의 삭제 : 하면안됨..

 

Map 컬렉션은 키, 값을 쌍으로 저장

순서 존재X

그 외 나머지 다 좋음.

 

문법적으로 자료를 묶을수있는 방법은

배열밖에 없다.