자바

[JAVA] Collections - 컬렉션

Atriel 2023. 11. 22. 14:41

배열의 문제점

1. 한번 크기를 지정하면 변경할수 없음

      - 공간 크기가 부족하면 에러 발생 -> 할당시 넉넉한 크기로 할당하게 됨 (메모리 낭비)

 

2. 기록된 데이터에 대한 중간위치 추가, 삭제가 불편함

      - 추가 삭제시 데이터를 뒤로 밀어내고 추가해야함 (알고리즘이 복잡해짐)

 

3. 한 타입의 데이터만 저장가능

 

 

컬렉션의 장점

1. 저장하는 크기의 제약이 없음

 

2. 추가, 삭제, 정렬 등의 기능 처리가 간단하게 해결됨

      - 자료를 구조적으로 처리하는 자료구조가 내장, 알고리즘 필요 X (코드 생산성 향상)

 

3. 여러 타입의 데이터 저장가능

 

 

주요 인터페이스

List, Set, Map 계열

List 계열 : 순서를 유지하고 저장, 중복저장 가능

Set 계열 : 순서를 유지하지 않고 저장, 중복저장 불가능

Map 계열 : 키와 값의 쌍으로 저장, 키는 중복저장 안됨

 

 

대부분 상황에서 ArrayList와 HashMap을 사용함 (제일 빠름, 성능이 좋다)

ArrayList  : Thread Safe

 

(추가, 삭제 기능 향상)

LinkedList

 

LinkedList를 기반으로 Queue 선언가능

LinkedList 기반으로 TreeMap: 데이터의 정렬 유지 가능

 

(검색기능을 빠르게 하려할대)

Hash계열 (HashMap, Hastable) 선언

일반적으로 HashMap 사용

베열과 연결된 형태로 검색에서는 최고의 성능을 보임

- 반드시 key와 value로 구성

 

1. Properties : 파일로 저장 가능한 Map (서버에서 세팅하거나, 언어 번역 데이터를 관리할때 주로 사용)

2. LinkedHashMap : 순서가 유지되는 대신 성능이 저하됨

3. HashSet : 집합, 중복제거

 

[List]

 

[Java] Collections - List

List 계열 주요 메서드 ArrayList 실제 배열을 기반으로 구현되어 있지만, 기존의 배열의 불편함만 없앤 컬렉션 List의 후손으로 초기 저장용량은 10으로 자동 설정 / 따로 지정 가능 저장 용량을 초과

atriel.tistory.com

 

[Set]

 

[Java] Colletions - Set

List나 Map에 비해 문법이 까다롭고 어려운 편 Set계열 주요 메서드 1. HashSet Hash를 사용하여 속도가 가장빠름 단, 중복 저장을 하지 못함 HashMap을 더 많이 사용함 2.LinkedHashSet HashSet과 비슷하지만 Set

atriel.tistory.com

 

[Map]

 

[Java] Collections - Map

해싱? 해시 함수를 통해서 일정한 길이의 값을 뽑아 데이터를 저장, 검색 해쉬 테이블은 배열과 링크드 리스트가 조합된 형태이다. (해싱은.. 보안 포렌식쪽에서만 써봤는데, 자바에서도 쓰이는

atriel.tistory.com