-
[Java] Collection frameworkLanguage/Java 2024. 7. 22. 14:14
collection framework?
데이터 군을 저장하는 클래스들을 표준화한 설계.
데이터 군을 다루고 표현하기 위한 단일화된 구조.- 컬렉션 : 다수의 데이터. 데이터 그룹
- 프레임웍 : 표준화된 프로그래밍 방식
JDK1.2부터 등장 (그 전에는 Vector, Hashtable, Properties 있었음)
컬렉션 데이터 그룹을 크게 세 가지로 존재한다고 정의한다.
- List
- Set
- Map
classDiagram Collection <|-- List Collection <|-- Set
List와 Set은 공통부분이 많아서 Collection 인터페이스로 정의할 수 있었으나, Map은 성질이 달라 상속 계층도에 포함되지 않는다.
Collection 인터페이스 메서드
- add/addAll() : 객체 또는 클래스를 collection에 추가
- clear() : 모두 삭제
- contains/containsAll() : 포함되어있는가
- equals()
- hashCode()
- isEmpty()
- iterator()
- remove/removeAll()
- retainAll() : 지정된 객체를 남기고 나머지는 삭제
- size()
- toArray() : 저장된 객체를 객체배열로 반환 or 지정된 배열에 객체를 저장해서 반환
List 인터페이스
- 중복 허용, 저장순서 유지상속계층도
classDiagram List <|-- Vector List <|-- ArrayList List <|-- LinkedList Vector <|-- Stack
diagram그리는 장치 : mermaid
List 인터페이스 메서드
- add(idx, obj)/addAll(idx, collection) : 지정된 위치에 객체를 추가
- get(idx) : 지정된 위치에 있는 객체를 반환
- indexOf(o) : 지정된 객체의 위치를 반환
- lastIndexOf(o) : 지정된 객체의 위치 반환(역방향 탐색)
- listIterator() : List의 객체에 접근할 수 있는 ListIterator를 반환
- remove(idx) : 지정된 위치에 있는 객체 삭제 및 반환
- set(idx, o) : 지정된 위치에 객체를 저장 및 반환
- sort(comparator c) : comparator로 List 정렬
- subList(from, to) : 지정된 범위에 있는 객체를 반환
Set 인터페이스
- 중복 허용 X, 순서 유지 X
classDiagram Set <|-- HashSet Set <|-- SortedSet SortedSet <|-- TreeSet
- 메서드는 모두 collection 인터페이스로부터 상속받음
Map 인터페이스
- 키는 중복될 수 없음 (같은 키로 값을 다르게 저장할 경우 갱신되는 방식)
- 키와 값을 하나의 쌍으로 묶어 저장
classDiagram Map <|-- Hashtable Map <|-- HashMap Map <|-- SortedMap HashMap <|-- LinkedHashMap SortedMap <|-- TreeMap
Map 인터페이스 메서드
- clear()
- containsKey/containsValue(o)
- entrySet() : key-value 쌍을 Map.Entry타입의 객체로 저장한 Set으로 반환
- equals()
- get(o) : 지정한 key객체에 대응하는 value객체를 찾아서 반환
- hashCode()
- isEmpty()
- Set keySet() : Map에 저장된 모든 key객체를 반환(중복이 안되므로 Set으로 반환)
- put(key,val) : value객체를 key객체에 연결하여 저장
- putAll(Map t) : 지정된 Map에 모든 key-value쌍을 추가
- remove(key) : 지정된 key-value 객체 삭제
- size()
- Collection values() : 저장된 모든 value객체를 반환(중복 가능하므로 Collection으로 반환)
'Language > Java' 카테고리의 다른 글
[IntelliJ]IDEA에서 java 버전 변경 (0) 2024.10.15 [우테코 프리코스] 임하는 자세 (0) 2024.10.15 [Java] Stack vs Queue (1) 2024.07.24 [Java] ArrayList vs LinkedList (0) 2024.07.24 [Java] 날짜와 시간 (0) 2024.07.19