일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 스프링 게시판 구현
- 정규표현식
- 스프링 게시판
- 스프링 프로젝트 설정
- 스프링 HikariCP
- Bcrypt
- spring 프로젝트
- oracle 설치방법
- 인증번호 전송
- spring 쇼핑몰
- 회원가입 기능
- 스프링 업로드
- 이미지 출력
- 스프링 이미지
- 쇼핑몰 포트폴리오
- ResponseEntity
- 파일 업로드
- 스프링 파일 삭제
- arraylist
- 삭제 구현
- 스프링 프로젝트 기본 설정
- BCrypt 적용
- 스프링 쇼핑몰 프로젝트
- 스프링 쇼핑몰
- 로그아웃 기능 구현
- 스프링 포트폴리오
- 로그인 기능
- 스프링 프로젝트
- 쇼핑몰 프로젝트
- 스프링 메일 전송
- Today
- Total
Kim VamPa
[Java]컬렉션 프레임웍(Collection Framework)란? 본문
개인 공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다.
목표
- 컬렉션 프레임웍이 무엇인지 이해합니다.
- 컬렉션 프레임웍과 배열의 차이점에 대해 이해합니다.
- 컬렉션 프레임웍의 핵심 인터페이스에 타입의 특징에 대해 이해합니다.
- 컬렉션 프레임웍의 핵심 인터페이스의 상속도를 공부합니다.
목차
1. 컬렉션 프레임웍(Collection Framework)이란?
2. 컬렉션 프레임웍 핵심 인터페이스
1. 컬렉션 프레임웍(Collection Framewokr)이란?
다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 집합
컬렉션 프레임웍은 다수의 데이터(이하 데이터 군)를 다양하고 풍부하게 다룰 수 있도록 도와주는 도구(수단)입니다. 컬렉션(Collection)은 데이터 그룹(다수의 데이터), 프레임웍(Framework)는 표준화된 프로그래밍 방식을 의미합니다.
개발자는 수많은 데이터를 다루어야만 합니다. 개발자가 수많은 데이터를 일일이 다룬다면 매우 많은 시간과 에너지가 낭비될 것입니다. 이러한 낭비를 줄여 주면서 데이터 군을 다를 수 있도록 도와주는 수단은 '배열'과 '컬렉션 프레임웍'이 있습니다.
개발자는 다수의 데이터를 다루는 상황에서 '배열'이 반드시 필요한 경우가 아니라면 대부분 '컬렉션 프레임웍'을 사용합니다. 그 이유로는 '컬렉션 프레임웍'이 좀 더 데이터 군을 다루는데 풍부하고 다양한 방식을 제공한다는 점과 '배열'의 불편한 점 때문입니다. 배열은 불편함은 생성 시에 선언한 크기는 변경이 안된고 하나의 배열은 하나의 타입만을 가질 수 있다는 점입니다. 반면에 컬렉션 프레임웍은 길이가 가변적이고 여러 가지 타입을 가질 수 있습니다.
배열은 크기가 고정적이고 컬렉션 프레임웍은 크기가 가변적이다라는 차이점을 실습을 통해서 살펴보겠습니다. 저는 크기가 3인 배열 array와 컬렉션 프레임웍 에 해당하는 ArrayList list를 선언하였습니다.
package collection;
import java.util.ArrayList;
public class ex {
public static void main(String[] args) {
/* 배열과 컬렉션 프레임웍 비교 */
/* 배열 : 길이가 고정적 */
/*컬렉션 프레임웍 : 길이가 가변적*/
/* 배열 */
int[] array = new int[3];
/* 컬렉션프레임웍(ArrayList) */
ArrayList list = new ArrayList();
}
}
array와 ArrayList에 각각 3개의 값을 추가시켜 console에 출력시켜보겠습니다.
package collection;
import java.util.ArrayList;
public class ex {
public static void main(String[] args) {
/* 배열과 컬렉션 프레임웍 비교 */
/* 배열 : 길이가 고정적 */
/*컬렉션 프레임웍 : 길이가 가변적*/
/* 배열 */
int[] array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
for(int i = 0; i < array.length; i++) {
System.out.println("배열" + i + "는 " + array[i]);
}
System.out.println("--------------------------------");
/* 컬렉션프레임웍(ArrayList) */
ArrayList list = new ArrayList();
list.add("list1");
list.add("list2");
list.add("list3");
for(int i = 0; i < list.size() ;i++) {
System.out.println("컬렉션 프레임웍 " + i + "는" + list.get(i));
}
}
}
이번엔 array에 한개의 값을 더 추가시켜보겠습니다.
ArrayIndexOutofBoudsException오류가 발생했습니다. array배열의 크기를 3으로 선언하였는데 그보다 더 많은 4번째 값을 넣었기 때문입니다.
이번엔 list에 값을 더 추가 해보도록 하겠습니다.
Arraylist타입의 참조 변수 list 경우에는 많은 값을 추가시켜주었음에도 정상적으로 출력이 된 것을 볼 수 있습니다. Arraylist를 처음에 선언 시 크기가 10이지만 이후에 값을 추가시켜주더라도 추가시켜준 값만큼 크기가 변하기 때문입니다.
2. 컬렉션 프레임웍 핵심 인터페이스
컬렉션 프레임웍은 3가지의 인터페이스로 구성되었습니다. 3가지 인터페이스는 'List', 'Set', 'Map'입니다. 그리고 인터페이스 List와 Set은 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였습니다. 아래 그림은 3가지 인터페이스의 상속도 입니다.
3개의 인터페이스는 각각의 특징을 가지고 있습니다. 개발자는 각각의 특징을 잘 이해하여 데이터 군을 다룰 시 그 상황에 맞는 컬렉션 프레임웍 인터페이스를 사용해야 합니다. 아래에 각 핵심 인터페이스의 특징 과 해당 인터페이스에 속하는 클래스 들에 대해 알아보겠습니다.
핵심인터페이스 특징
List
- '순서'가 있는 데이터의 집합입니다. 데이터의 '중복'을 허용합니다.
- ex) 대기자 명단
- 구현 클래스 : ArrayList, LinkedList, Stack, Vector 등
- List의 상속계층도
Set
- '순서'를 유지하지 않는 데이터의 집합, 데이터의 '중복'을 허용하지 않습니다.
- ex) 양의 정수 집합, 소수의 집합
- 구현 클래스 : HashSet, TreeSet 등
- Set의 상속계층도
Map
- 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합입니다.
- 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용합니다.
- ex) 우편번호, 지역번호(전화번호)
- 구현 클래스 : HashMap, TreeMap, Hashtable, Properties 등
- Map 상속계층도
Reference
- 자바의 정석(남궁성 지음)
- http://tcpschool.com/java/java_collectionFramework_concept
- https://opentutorials.org/course/1223/6446
Date
- 2020.05.05 작성
'공부 > 자바' 카테고리의 다른 글
[Java][1]LinkedList란? (0) | 2020.05.11 |
---|---|
[Java]ArrayList란?(기본사용방법) (0) | 2020.05.06 |
[Java]다형성(polymorphism)이란? (0) | 2020.04.24 |
[Spring] JDBC란? Connection pool이란? (0) | 2020.04.03 |
JDK(Java Development Kit) 설치방법[자바 개발자버전 설치] (0) | 2020.03.19 |