컬렉션 프레임 워크
인터페이스 분류 | 특징 | 구현클래스 | |
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 | 느림 | 빠름 | 느림 |
'프로그래밍 > JAVA 내용정리' 카테고리의 다른 글
[MordernJavaInAction] 6장 스트림으로 데이터 수집(Stream Collector) 1편. (0) | 2022.09.25 |
---|---|
[ModernJavaInAction] 5장 스트림의 활용 (1) | 2022.09.12 |
[Java] Atomic Integer에 대하여. (0) | 2022.08.28 |
[ModernJavaInAction] 4장 스트림(Stream) (0) | 2022.08.22 |
컬렉션 프레임 워크 (Set, HashSet) (0) | 2020.10.11 |