본문 바로가기
프로그래밍/JAVA 내용정리

컬렉션 프레임 워크 (List, ArrayList, Vector, LinkedList)

by 노잼인간이라불립니다 2020. 10. 11.

컬렉션 프레임 워크

인터페이스 분류 특징 구현클래스
Collection List - 인덱스 O (순서 있음)
- 중복저장 가능
ArrayList, Vector, LinkedList
Set - 인덱스 X (순서 없음)
- 중복저장 불가
HashSet, TreeSet
Map - Key, Value 쌍인 Entry 객체로 구성되어있음.
- Key는 중복 저장 불가, Value는 가능.

HashMap, Hashtable, TreeMap, Properties

 

1. List 컬렉션

- 인덱스로 추가, 검색, 삭제 하기 때문에 인덱스를 매개값으로 갖는 메소드가 많다.

- List 배열은 객체의 번지를 참조한다.

- null일 경우 객체 참조 X.

기능 메소드명 기능설명
객체추가 boolean add(E e) e를 List 맨 끝에 추가***
void add(int index,E element) element를 인덱스 자리에 추가(그 자리에 있던 객체는 한칸 밀려남)***
Object set(int index,E element) O를 인덱스 자리에 삽입(O가 그 자리에 있던 객체를 대체)***
객체검색 boolean contains(Object o) Object o가 저장되어 있는지 True,False 리턴
E get(int index) index에 있는 객체를 리턴***
boolean isEmpty() 컬렉션이 비어있는지 True/False 리턴
int size() List의 전체 객체수를 int로 리턴(배열길이 리턴)***
객체삭제 void clear() List의 모든 객체 삭제
E remove(int index) 인덱스에 있는 객체 삭제***
boolean remove(Object O) 주어진 객체를 삭제***

 

- ArrayList의 특징

1. 일반배열처럼 인덱스로 객체를 관리.

2. 일반배열은 크기가 고정되어 사용중에 크기를 변경 불가, 저장공간이 초과 될 경우 오버플로우 발생. 그러나 ArrayList는 저장용량이 초과되면 저절로 공간이 추가되어 객체 저장가능( 동적할당 ).

 

- Vector의 특징

1. ArrayList와 기본적으로 동일한 구조를 가지고 있으나, 동기화(Synchronized) 메소드로 구성되어 있어, 멀티스레드 환경에서 안전하게 객체를 추가, 삭제할 수 있다.(Thread Safe)(싱글 스레드 환경에서는 ArrayList가 더 적합.)

 

- LinkedList의 특징

1. 인접 참조를 링크해서 체인 처럼 관리.

2. ArrayList에서는 객체를 중간에 추가, 삭제했을 경우 인덱스가 +1, -1 되어졌으나 LinkedList에서는 앞뒤 링크(참조)만 바뀜 (그래서 삽입,삭제가 빈번하면 성능이 우수.)

 

- ArrayList 와 LinkedList 비교.

1. 삽입 삭제가 빈번한 배열에서는 LinkedList가 빠름.

2. 인덱스 검색이나 객체를 순서대로 추가하는 경우는 ArrayList가 더 빠름.

 

구분 순차적 추가,삭제 중간에 추가/삭제 검색
ArrayList 빠름 느림 빠름
LinkedList 느림 빠름 느림