[F-Lab 모각코 챌린지 13일차] Java Collection Framework 개요
TIL
- Collection Framework
- 최상위 인터페이스
- Iterable
- Collection
- 핵심 인터페이스
- List
- Set
- Map
Collection
여러 객체(데이터)를 모아 놓은 것을 의미한다.
Framework
- 기능 제공 뿐만 아니라 표준화, 정형화 된 체계적인 프로그래밍 방식
- 자유도가 떨어진다고 볼 수 있지만 정해진대로 하면 되니 생산성이 올라간다.
- 유지보수가 쉽다.
(* 라이브러리는 단순히 기능만 제공)
Collection Framework
- 컬렉션(여러 객체)을 다루기 위한 표준화 된 프로그래밍 방식
- 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공한다.
- 객체를 저장, 삭제, 검색, 정렬 하는 것을 쉽게 다룰 수 있다.
- java.util 패키지에 포함 되어있고 JDK1.2부터 표준화하여 제공했다.
- 컬렉션 프레임워크에 저장할 수 있는 데이터는 오직
Object
뿐이다. int형 같은 자바의 primitive 타입은 저장할 수 없다. 만약 primitive 타입 wrapper 타입으로 Boxing 하여 저장해야한다. 객체를 저장한다는 것은 주소값을 저장한다는 의미이니 null 저장도 가능하다.
최상위 Interface
- Iterable
- Collection
List 인터페이스와 Set 인터페이스를 구현한 컬렉션 클래스들은 단일 데이터를 저장하는 등의 공통점이 많기 때문에 그 공통점을 모아둔 Collection 인터페이스를 상속 받는다.
Iterable Interface
- 컬렉션 인터페이스의 가장 최상단 인터페이스
- Iterator 객체를 관리한다.
리턴 타입 | 메소드명 | 설명 |
---|---|---|
Iterator | iterator() | 컬렉션에서 Iterator를 구현함 |
void | forEach(Consumer<? super T> action) | 함수형 프로그래밍 전용 루프 메소드 |
Spliterator | spliterator() | 파이프라이닝 관련 메소드 |
(* 함수형 프로그래밍, Consumer, 파이프라이닝에 대한 추가학습 필요)
Collection Interface(API)
- List, Set, Queue가 상속 받는 인터페이스
- 업캐스팅으로 다양한 종류의 컬렉션 자료형을 받아 데이터를 저장, 삭제, 검색 할 수 있다. (다형성)
- 해당 인터페이스의 메소드를 살펴보면 데이터를 get 하는 메소드는 없다. 왜냐하면 상속 받는 각 자료형마다 자료구조가 제각각이기 때문에 상위 타입인 Collection 타입으로 조회하는데 까다롭기 때문이다.
핵심 Interface
- List
- Set
- Map
List(API)
- 저장순서가 있는 데이터의 집합
- 데이터의 중복을 허용
- 배열과 가장 큰 차이점은 데이터의 양에 따라 동적으로 늘어나고 줄어들 수 있다.
- 각 요소 사이에 빈 공간을 허용하지 않아 삽입, 삭제할 때마다 배열 이동이 일어난다.
- 구현 클래스: ArrayList, LinkedList, Stack, Vector
- ArrayList와 Vector는 거의 비슷한데 Vector는 예전에 만들어진 클래스다. ArrayList는 여러명이 달려들어 값을 변경하려고 하면 문제가 발생할 수 있고 Vector는 그렇지 않다. 즉, ArrayList는 동기화 보장이 안 되고 Vector는 동기화를 보장한다.
- ex) 대기자 명단
Set(API)
- 저장순서가 없다.
- 데이터의 중복을 허용하지 않는다.
- 저장순서가 없으므로 index를 통해 객체를 get하는 기능도 없다.
- 중복 저장이 불가하므로 null 값도 하나만 저장할 수 있다.
- 집합과 관련된 메소드들이 있는데 컬렉션에 변화가 있으면 true, 아니면 false를 반환한다.
- 구현 클래스: HashSet, TreeSet, LinkedHashSet
- ex) 양의 정수집합, 소수의 집합
Map(API)
- key와 value가 쌍으로 이루어진 데이터의 집합
- 저장순서가 없다.
- key는 중복을 허용하지 않고 value는 중복을 허용한다.
- key 값을 반환할 때, Set 인터페이스 타입으로 반환하고 value 값을 반환할 때, Collection 타입으로 반환한다. 그 이유는 key 값을 중복을 허용하지 않기 때문에 Set 타입으로 반환하고 value 값은 중복을 허용하기 때문에 Collection 타입으로 반환하는 것이다.
- 구현 클래스: HashMap, TreeMap, HashTable, LinkedHashMap
- HashTable과 HashMap은 같은데 HashTable은 예전에 만들어진 클래스다. HashTable은 동기화가 되고 HashMap은 동기화 되지 않는다. (기능이 따로 제공되긴 한다.)
- ex) 지역번호 (02 - 서울, 031 - 경기)
📚 참고
자바의 신 22장
Java Collections Framework 종류 💯 총정리
Collection, List, Set, Map
컬렉션프레임웍과 핵심 인터페이스
'JAVA' 카테고리의 다른 글
[F-Lab 모각코 챌린지 15일차] ArrayList 주요 메소드의 시간복잡도 (0) | 2023.06.22 |
---|---|
[F-Lab 모각코 챌린지 14일차] ArrayList 특징, 배열과의 차이점, 순회하는 방법 (0) | 2023.06.21 |
[F-Lab 모각코 챌린지 12일차] try-with-resource / String의 hashCode() 뜯어보기 (0) | 2023.06.19 |
[F-Lab 모각코 챌린지 11일차] 시간복잡도, 공간복잡도 (0) | 2023.06.18 |
[F-Lab 모각코 챌린지 10일차] 자바가 실수를 다루는 법-2 (BigDecimal) (0) | 2023.06.17 |
댓글
이 글 공유하기
다른 글
-
[F-Lab 모각코 챌린지 15일차] ArrayList 주요 메소드의 시간복잡도
[F-Lab 모각코 챌린지 15일차] ArrayList 주요 메소드의 시간복잡도
2023.06.22 -
[F-Lab 모각코 챌린지 14일차] ArrayList 특징, 배열과의 차이점, 순회하는 방법
[F-Lab 모각코 챌린지 14일차] ArrayList 특징, 배열과의 차이점, 순회하는 방법
2023.06.21 -
[F-Lab 모각코 챌린지 12일차] try-with-resource / String의 hashCode() 뜯어보기
[F-Lab 모각코 챌린지 12일차] try-with-resource / String의 hashCode() 뜯어보기
2023.06.19 -
[F-Lab 모각코 챌린지 11일차] 시간복잡도, 공간복잡도
[F-Lab 모각코 챌린지 11일차] 시간복잡도, 공간복잡도
2023.06.18