-
Java | Collection Framework 컬렉션 프레임워크JAVA/JAVA 2020. 2. 7. 18:56
Collection Framework 컬렉션 프레임워크
필요한 자료 구조를 미리 구현하여 java.util 패키지에서 제공하는 것
컬렉션 프레임 워크에는 여러 인터페이스가 정의되어 있고
인터페이스를 구현한 클래스가 있음- 전체 구조는 Collection 인터페이스와 Map 인터페이스를 기반으로 이루어짐
- Collection 인터페이스는 하나의 자료를 모아서 관리하는 데 필요한 기능 제공
- Map 인터페이스는 쌍(pair)으로 된 자료들을 관리하는 데 유용한 기능 제공
Collection 인터페이스
하나의 자료를 모아서 관리하는 데 필요한 기능을 제공하는 인터페이스
하위에 List 와 Set 인터페이스가 있음
- List: 순차적인 자료를 관리하는 데 사용하는 인터페이스, 중복을 허용함
ArrayList, Vector, LinkedList, Stack, Queue 등의 구현 클래스들이 있음 - Set: 순서와 상관없이 중복을 허용하지 않음
아이디처럼 중복되지 않는 객체를 다루는데 사용
HashSet, TressSet 등의 구현 클래스 존재
Collection 메소드
구현 클래스에서 오버라이딩해야 하는 추상 메소드
구현 클래스마다 이름이 다른 메소드를 사용하면 기억하기가 어렵기 때문에
인터페이스에서 자주 사용될 만한 메소드를 미리 정의해 둠메소드 설명 boolean add(E e) Collection에 객체를 추가함 void clear() Collection의 모든 객체 제거 boolean remove(Object o) Collection에 매개변수에 해당하는 인스턴스가 존재하면 제거 int size() Collection에 있는 요소 개수 반환 boolean isEmpty() Collection에 데이터가 하나도 들어있지 않다면 true 반환 Iterator< E > iterator() 해당 컬렉션 내부의 요소들을 iterator로 반환
Map 인터페이스
쌍(pair)으로 된 자료들을 관리하는 데 유용한 기능을 제공하는 인터페이스
- key - value 쌍으로 데이터 관리
- key 값은 중복될 수 없으며, value 값은 중복 가능
- 검색용 자료 구조이며, 검색 속도가 가장 빠름
- key 값을 알고 있을 때 value 를 찾기 위한 자료 구조임
- 대표 구현 클래스: HashTable, HashMap, TreeMap
Map Method
메소드 설명 V put(K key, V value) key에 해당하는 value 값을 map에 추가 V get(K key) key에 해당하는 value 값 반환 boolean isEmpty() Map이 비었는지 여부를 반환
비어있다면 true 반환boolean containsKey(Object key) Map에 해당 key가 있다면 true 반환 boolean containsValue(Object value) Map에 해당 value가 있다면 true 반환 Set keyset() key 집합을 Set로 반환, 중복 불가
Set은 값의 중복을 허용하지 않음Collection values() value들을 Collection으로 반환
중복 허용
Iterator 사용시 값들을 Collection 객체로 먼저 보내기 위해 사용
∵ iterator() 메소드가 없음V remove(key) key가 있는 경우 삭제 boolean remove(Object key, Object value) key가 있는 경우 key에 해당하는 value가 매개변수와 일치할 때 삭제
컬렉션 프레임워크에 대해 개괄적으로 살펴보았습니다.
데이터를 효율적으로 저장하기 위해서는 자료 구조가 필요한데,
컬렉션 프레임워크는 이러한 자료 구조를 자바에서 미리 구현해 둔 것이라고 할 수 있습니다.
컬렉션 프레임워크는 크게 List, Set, Map으로 나누어져 있으며 각각의 컬렉션에 대해서는
앞으로 차차 다룰 예정입니다.
'JAVA > JAVA' 카테고리의 다른 글
Java | Map_HashMap (0) 2020.02.08 Java | List_ArrayList & LinkedList & Vector (0) 2020.02.08 Java | Wrapper Class (0) 2020.02.07 Java | I/O File Class (0) 2020.02.07 Java | Serialization 직렬화 (0) 2020.02.07