자바 기본8 - Collection Framework 1
컬렉션 프레임워크
Collection(컬렉션) 은 여러 객체 및 데이터들을 모아 놓은 것을 의미한다. Framework(프레임워크) 는 컬렉션을 다루기 위한 표준화된 프로그래밍 방식이다. 즉, 컬렉션 프레임워크( Collection Framework)는 객체의 집합을 다루기 위한 표준화된 프로그래밍 방식을 의미한다. Collection을 편리하게 다루기 위한 다양한 클래스(java.util 패키지)를 제공하며 다수의 데이터를 저장할 수 있는 Vector, ArrayList, HashSet 등의 클래스를 제공한다.
핵심 인터페이스
- List : 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. (ArrayList, LinkedList, Stack, Vector 등)
- Set - 순서를 유지하지 않는 데이터의 집합. 데이터 중복을 허용하지 않는다. (HashSet, TreeSet 등)
- Map : 키와 값의 쌍으로 이루어진 데이터의 집합. 순서 유지X, 키 중복X, 값 중복O (HashMap, TreeMap, Hashtable, Properties 등)
List 인터페이스 메서드
- 순서가 있는 데이터 집합니다.
- 데이터의 중복이 허용된다.
- 주요 메서드 : add(), addAll(), get(), indexOf(), lastIndexOf(), listIterator(), remove(), set(), sort(), subList()
Set 인터페이스 메서드
- 순서가 없는 데이터 집합이다.
- 중복을 허용하지 않는다.
- 주요 메서드 : Collection 인터페이스 메서드와 동일하게 사용한다.
Map 인터페이스 메서드
- 순서가 없는 데이터 집합이다.
- 키 중복을 허용하지 않는다.
- 값 중복을 허용한다.
- 주요 메서드 : clear(), containsKey(), containsValue(), entrySet(), get(), equals(), hashCode(), isEmpty(), keySet(), put(), putAll(), remove(), size(), values()
Vector와 ArrayList
- ArrayList는 기존의 Vector를 개선한 것으로 구현 원리가 같고 기능적으로 동일하다.
- Vector는 자체적으로 동기화처리가 되어 있으나 ArrayList는 그렇지 않다.
- Vector는 한번에 하나의 스레드만 접근 가능하며, ArrayList는 동시에 여러 스레드에서 작업이 가능하다.
- List 인터페이스를 구현하므로 저장순서가 유지되고 중복을 허용한다,
- 데이터의 저장공간으로 배열을 사용한다.
- 필요에 따라 크기를 동적으로 조절할 수 있다.
ArrayList의 장점과 단점
- 배열은 구조가 간단하고 데이터를 읽는데 걸리는 시간이 짧다.
- 순차적인 데이터의 추가/삭제가 빠르다.
- 배열 생성 후 크기를 직접 변경할 수 없다.
- 크기 변경을 피하기 위해 충분히 큰 배열을 생성하면 메모리가 낭비된다.
- 비순차적인 데이터의 추가/삭제에 시간이 많이 걸린다.
LinkedList
- 배열과 달리 불연속적으로 존재하는 데이터를 연결한다.
- 순차적인 데이터 추가/삭제는 ArrayList가 빠르지만 비순차적인 추가/삭제는 LinkedList가 빠르다.
- 접근시간이 ArrayList에 비해 느리고 데이터가 많을수록 접근성이 떨어진다.
This post is licensed under CC BY 4.0 by the author.