본문 바로가기

JAVA/JAVA

자바 컬렉션 프레임워크에 대한 설명

반응형

순서

1. 컬렉션 프레임워크 사용 이유

2. 컬렉션 프레임워크 종류

3. 컬렉션 프레임워크 종류에 대한 설명

4. 컬렉션 프레임워크의 장단점

5. ArrayList 와 LinkedList 의 다른 동작방식

6. List 와 Map 의 사용방식에 따른 쓰임새




1. 왜 컬렉션 프레임워크(Set, List, Map)을 사용해야 할까요?

전통적으로 프로그래밍에서 많은 양의 자료(데이터)처리를 위해서는 배열을 이용한다.

그러나 이 배열은 불편한 점이 2가지가 있다.


1. 배열에 담는 자료형은 동일해야 한다. 밑에 문장처럼 배열에 한가지 자료형밖에 담을 수 있다.

한가지뿐 아니라 다른 자료형도 함께 넣고 싶지만 그냥 배열에서는 힘든 부분이다.

int []arr = new int[100];


2. 배열은 데이터의 크기를 알 수 없는 경우에는 부적합하다.

데이터의 크기가 미리 안정해진 경우, 파악하기 어려운 경우는 배열에서 힘들다.

기준을 많이 잡아놓고 다 사용하지 않는다면 메모리를 차지하고만 있고,

기준을 낮게 잡아놓으면 기준치초과시 다시 만들어야하는 불편함이 있다.

String []name = new String[1000];


==> 이런 배열의 단점을 보완하기 위해 컬렉션 프레임워크(==동적배열)를 만들었다.


동적배열이란? 

: 사용자의 사용여부에 따라 늘어나기도 줄어들기도 하는 배열을 의미

위에 그냥 배열은 정적배열이라고 한다.



2. 컬렉션 프레임워크 종류

Set

List

Map



3. 컬렉션 프레임워크(==동적배열)


1) Set ==> 중복불가능

HashSet == 데이터 입력의 순서를 유지하지 않는다. (사용빈도수 높음)

LinkedHashSet == 데이터 입력의 순서를 유지한다. 

TreeSet == 데이터를 사전식으로 정렬해준다. (ex. 로또번호)


2) List ==> 중복가능

ArrayList 와 LinkedList는 사용자가 볼때 같지만 내부적으로 동작방식이 다르다.

ArrayList ==  (사용빈도수 높음(컬렉션 프레임워크 중에서도))

LinkedList == 

Stack == 

Vector ==  (자바초기에 많이 사용했었음)


3) Map ==> key 와 value 를 이용해 데이터에 접근 방식

key는 중복 불가, value는 중복 가능

key 가 중복이 된다면 원래 값을 반환하고 새로운 값을 넣는다.

index가 아닌 key로 접근하다보니 보다 더 직관적이다.

HashMap == 데이터 입력의 순서를 유지하지 않는다.

LinkedHashMap == 데이터 입력의 순서를 유지한다.

TreeMap == 데이터를 사전식으로 정렬해준다.



API ===> Java.util 안에서 참고



Set의 데이터를 하나씩 읽어오기 및 기능

Iterator



4. 컬렉션 프레임워크의 장단점


장점

1) 온갖 자료형을 넣을 수 있다. String , int , double, date 등등

단점

2) 데이터를 꺼내와서 써먹기 위해서는 다시 형변환을 해야하기 때문에 번거로움이 있다.

예를 들어 Person의 클래스를 만들어서 써먹고 싶으면 (Person)이란 형변환을,,

int를 쓰고 싶으면 (int)로 형변환을 해야한다.


==> 이러한 단점을 보완하기 위해 자료형을 제한해서 쓰고 싶어서 제네릭이란 것이 만들어짐



5. ArrayList 와 LinkedList 의 다른 동작방식

remove 관련

ArrayList 는 배열과 같은 전통적인 방식을 가지고 있다. 입력한 순으로 연속된 메모리이다. remove를 사용할때 index(1) 을 지운다면 없어진 데이터 자리에 값을 채우기 위해 뒤에있는 모든 데이터가 (index-1) 즉, 자리이동을 한칸씩 하게 된다.

(데이터의 특정위치(중간에) 추가,삭제가 빈번하지 않을때 사용)

LinkedList 는 데이터만 생기는 것이 아니라 데이터를 생성하면서 다음에 올 데이터 주소값을 가르키고 있기때문에 데이터의 자리이동이 없다.

(데이터의 특정위치(중간에) 추가,삭제가 빈번할때 사용)



6. List 와 Map 의 사용방식에 따른 쓰임새

List == index로 접근함

Map == index가 아닌 key로 접근하니 보다 더 직관적이다

반응형