컬렉션 프레임워크 (1)

김예지·2023년 1월 4일
0

컬렉션 프레임워크란

데이터를 저장하는 클래스들을 표준화한 설계
컬렉션을 다루기 위한 표준화된 프로그램 방식 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공한다

핵심 인터페이스의 종류

List -> 순서가 있는 데이터의 집합 데이터의 중복을 허용한다
Set -> 순서를 유지하지 않는 데이터의 집합 데이커의 중복을 허용하지 않는다
Map -> key , value 로 이루어져 있으며 , 순서는 유지되지 않는다 키는 중복을 허용하지 않고, 값을 중복을 허용한다

실제 사용을 할 때에는 각 인터페이스의 주특징을 파악하여 그에 맞는 인터페이스를 사용하는 것이 좋다

List 중 ArrayList

데이터의 저장순서가 저장이되고 중복 값을 허용한다 저장방식은 배열의 순서대로 저장이 되며 배열에 더 이상 저장할 공간이 없으면 큰 새로운 배열을 생성해서 기존의 배열에 저장된 내용을 새로운 배열로 복사한 다음에 저장된다
ArrayList array = new ArrayList();

기본형은 저장할 수 없음 대신 outoboxing를 통하여 Integer로 형변환 시켜 객채로 저장한다

remove 사용시 주의 할 점
1. remove(1) - 인덱스 1번이 삭제됨
2. remove(new Integer(1)) - 값이 1인 공간이 삭제됨

ArrayList의 삭제 방식
1. 삭제할 데이터의 아래에 있는 데이터를 한 칸씩 위로 복사해서 삭제할 데이터를 덮어쓴다
2. 데이터가 모두 한 칸씪 위로 이동하였으므로 마지막 데이터는 null로 변경해야 한다
3. 데이터가 삭제되어 데이터의 개수(size)가 줄었으므로 size의 값을 1 감소시킨다
->List 삭제 for문 사용할 때 0부터 시작이 아닌 마지막 객체부터 시작하면 복사단계 없이 더 빠르고 정확한 삭제가 가능하다

List 중 LinkedList

크기를 변경 할 수 없고, 데이터의 추가 삭제의 시간이 오래걸리는 배열의 단점을 보안하고자 LinkedList라는 자료구조가 나왔고 배열은 모든 데이터가 연속적으로 존재하지만 링크드 리스트는 불연속적으로 존재하는 데이터를 서로 연결한 형태로 구성되어있다

LinkedList의 삭제와 추가

데이터 삭제는 간단하다 삭제하고자 하는 요소의 이전요소가 삭제하고자 하는 요소의 다음요소를 참조하도록 변경하기만 하면 된다 단 하나의 참조만 변경하면 삭제가 이루어지는 것이다 배열처럼 데이터를 이동하기 우해 복하는 과정이 없기 때문에 처리속도가 매우 빠르다

새로운 데이터를 추가할 때는 새로운 요소를 생성한 다음 추가하고자 하는 위치의 이전 요소의 참조를 새로운 요소에 대한 참조로 변경해주고, 새로운 요소가 그 다음 요소를 참조하도록 변경하기만 하면 되므로 처리속도가 매우 빠르다

다루고자 하는 데이터의 개수가 변하지 않는 경우라면 ArrayList가 최사으이 선택이 되겠지만, 데이터 개수의 변경이 잦다면 LinkedList를 사용하는 것이 더 나은 선택이 될 것이다

Stack Queue

Stack은 push(저장) pop(추출)로 이루어진 LIFO(Last In First Out) 구조로 되어있는 클래스이고 마지막에 저장된 것을 먼저 꺼내는 형식으로 되어있다
Queue은 offer(저장) poll(추출)로 이루어진 FIFO(First In First Out) 구조로 되어있는 인터페이스이고 제일 먼저 저장한 것을 제일 먼저 꺼내는 형식으로 되어있다

profile
나만의 방식을 찾아가는 신입신입 개발자

0개의 댓글