일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 멀티쓰레드
- 바인드변수
- Swing
- 인스턴스
- 클라이언트
- 깃허브
- Oracle
- JPA Auditing
- 카카오코딩테스트
- 생성자
- 컬렉션프레임워크
- java
- Spring
- jcenter
- springboot
- 서버
- socket
- HTML모드
- 템플릿엔진
- 상속
- 메소드
- 자바
- 코딩
- SwingCalendar
- 사용자관리프로그램
- 백준
- mavenCentral
- springDataJPA
- 클래스
- JavaScript
- Today
- Total
프리 정보 컨텐츠
자바 컬렉션 프레임워크 개념파악 및 공부방법 본문
자바 컬렉션 프레임워크를 처음 접할 때는 언제 어떻게 쓰는지에 대해서 중점을 두어야 한다.
처음부터 이론 중심의 이해가 아닌 여러 번 빠르게 전체적 반복 학습하자.
기초적인 개념에 대해서 먼저 알아보자.
컬렉션 - 여러 객체를 모아 놓은 것을 의미
프레임워크 - 표준화된 체계적인 프로그래밍 방식
컬렉션 프레임워크 정의?
데이터를 저장하는 자료 구조와 알고리즘을 구조화하여 클래스로 구현한 것
컬렉션 프레임워크를 사용하는 이유?
컬렉션 프레임워크는 표준화하고 체계적이기 때문에 프로그래밍을 작성하는 방식이 비슷해서 다른 사람의 코드를 유지보수하기 쉬워서 사용한다. 대표적으로 스프링 프레임워크를 예로 들 수 있다.
객체를 다루기 위해 배열을 자주 다루었는데, 배열을 사용할 때의 비효율적인 문제를 해결하기 위해서 컬렉션 프레임워크를 사용한다. 배열의 크기는 생성할 때 크기를 정하고, 크기가 넘어가면 데이터를 저장할 수 없는 문제점이 있다.
즉, 배열의 문제점을 해결하기 위해 자료구조를 바탕으로 객체나 데이터들을 (추가, 삭제, 검색, 저장) 할 수 있도록 만들어져 있다. 이러한 자료구조들을 컬렉션 프레임워크라고 말하며 대표적으로 List, Set, Map, Stack, Queue 등이 있다.
오늘은 가장 핵심적인 인터페이스인 List, Set, Map에 대해서 알아보자.
인터페이스 |
설명 |
클래스 |
List <E> |
순서가 있는 데이터의 집합으로, 데이터의 중복을 허용한다. |
Vector, ArrayList, LinkedList, Stack, Queue 등 |
Set <E> |
순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않는다. |
HashSet, TreeSet 등 |
Map <K, V> |
키(Key)와 값(Value)의 한 쌍으로 이루어진 데이터의 집합으로 순서가 없다. |
HashMap, TreeMap, Hashtable, Properties |
List와 Set 인터페이스는 Collection 인터페이스를 상속받지만, Map 인터페이스는 별도로 정의된다.
List <-> Set List와 Set 인터페이스의 구조적 설명은 반대로 생각하자.
다루려는 데이터 특징에 맞춰서 필요한 인터페이스를 선택해서 사용한다.
ex) 순서를 유지해야 되고 중복이 있거나 없어도 된다. -> List 인터페이스의 클래스 중 한 개를 사용한다.
List와 Set의 공통된 부분은 Collection 인터페이스에서 정의한다.
Collection 인터페이스는 가장 기본적인 동작들을 정의하고, 메소드로서 제공하고 있다.
앞으로 기본적인 메소드는 자주 사용하니 반복학습을 통해 익혀두자.
메소드 | 설명 |
boolean add(E e) | 해당 컬렉션(collection)에 전달된 요소를 추가 (선택적 기능) |
void clear() | 해당 컬렉션의 모든 요소를 제거함. (선택적 기능) |
boolean contains(Object o) | 해당 컬렉션이 전달된 객체를 포함하고 있는지를 확인함. |
boolean equals(Object o) | 해당 컬렉션과 전달된 객체가 같은지를 확인함. |
boolean isEmpty() | 해당 컬렉션이 비어있는지를 확인함. |
Iterator<E> iterator() | 해당 컬렉션의 반복자(iterator)를 반환함. |
boolean remove(Object o) | 해당 컬렉션에서 전달된 객체를 제거함. (선택적 기능) |
int size() | 해당 컬렉션의 요소의 총 개수를 반환함. |
Object[] toArray() | 해당 컬렉션의 모든 요소를 Object 타입의 배열로 반환함. |
List, Set, Map에 대한 자세한 내용은 추후에 알아보도록 하자.