Collection FrameWork
객체의 그룹을 효율적으로 관리하기 위한 다양한 클래스와 인터페이스를 제공함 |
객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 클래스들을 java.util 패키지에 포함 |
Collection FrameWork 의 상속 구조
List, Set | 객체를 추가, 삭제 검색하는 방법에 때한 공통점이 존재해 공통된 메소드만 따로 모아 Colllection 인터페이스로 정의해두고 이를 상속함 |
Map | 키와 값을 하나의 쌍으로 묶어서 관리하는 구조로 List, Set과 사용하는 방법이 틀림 |
List란?
요소의 순서를 유지하고 저장하며 중복된 요소를 허용하는 컬렉션 |
List의 종류
ArrayList | ArrayList는 List 인터페이스의 동적 배열 구현 |
초기 크기가 있지만, 요소가 추가됨에 따라 자동으로 크기가 확장되는 방식 | |
배열 기반이므로 인덱스를 사용한 요소 접근이 빠르지만, 중간에 요소를 삽입하거나 삭제하는 연산은 느리다. | |
LinkedList | List와 Deque 인터페이스의 양방향 연결 리스트 구현 |
연결 리스트 기반이므로 중간에 요소를 삽입하거나 삭제하는 연산이 빠르지만, 인덱스를 사용한 요소 접근은 느린 편 |
List 컬렉션에서 사용 가능한 메서드
기능 | 메소드 | 설명 |
객체 추가 | boolean add(E e) | 주어진 객체를 맨 끝에 추가 |
void add(int index, E element) | 주어진 인덱스에 객체를 추가 | |
set(int index, E element) | 주어진 인덱스의 객체를 새로운 객체로 변경시킴. index가 지정된 add와 다른 점은 기존 객체가 뒤로 밀려나지 않고 교체되는 것 |
|
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되었는지 여부 |
E get(int index) | 주어진 인덱스에 저장된 객체 리턴 | |
isEmpty() | 컬렉션이 비어있는지 여부를 나타냄 | |
int size() | 컬렉션에 저장된 전체 객체 수 리턴 | |
객체 삭제 | void clear() | 저장된 모든 객체 삭제 |
E remove(int index) | 주어진 인덱스에 저장된 객체 삭제 | |
boolean remove(Object o) | 주어진 객체 삭제 |
Set란?
List와 달리 중복된 요소를 저장할 수 없으며, 순서를 보장하지 않는 컬렉션 |
Set의 종류
HashSet | 대표적인 클래스로 해시 테이블을 사용하여 요소를 저장 |
순서를 보장하지 않으며, 동일한 객체는 중복 저장하지 않음 | |
LinkedHashSet | HashSet을 확장한 버진이며, 요소의 삽입 순서를 기억함 |
요소의 삽입 순서대로 반복됨 | |
TreeSet | 이진 검색 트리 자료구조의 형태로 데이터를 저장 |
자동으로 정렬된 순서로 요소를 저장하며, 사용자 정의 정렬도 가능함 |
Set에서 사용 가능한 메소드
기능 | 메소드 | 설명 |
객체 추가 | boolean add(E e) | 주어진 객체를 저장하며, 중복된 요소가 없다면 true, 있다면 false를 반환 |
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부 |
isEmpty() | 컬렉션이 비어 있는지 여부 | |
Iterator <E> iterator() | 저장된 객체를 한 번씩 가져오는 반복자 리턴 | |
int size() | 컬렉션에 저장된 전체 객체 수 리턴 | |
객체 삭제 | void clear() | 저장된 모든 객체 삭제 |
boolean remove(Object o) | 주어진 객체를 삭제 |
Map이란?
키와 값으로 구성된 Entry 객체를 저장하는 데이터 구조 |
각 키는 고유해야 하며 값은 중복될 수 있는 것이 특징 |
Map에 포함되는 녀석들
HashMap | 해시 테이블을 사용하여 키-값 쌍을 저장함 |
순서를 보장하지 않음 | |
LinkedHashMap | HashMap을 확장하여 키-값 쌍의 삽입 순서나 접근 순서를 기억함 |
순서가 중요한 경우에 유용 | |
TreeMap | 키에 따라 자동으로 정렬 |
숫자-> 알파벳 대문자 -> 알파벳 소문자 -> 한글 순으로 정렬 |
Map에서 사용 가능한 메소드
기능 | 메소드 | 설명 |
객체 추가 | V put(K key, V value) | 주어진 키와 값을 추가, 저장되면 값 리턴 |
객체 검색 | boolean containsKey(Object key) | 주어진 키가 있는지 여부 확인 |
boolean containsValue(Object value) | 주어진 값이 있는지 여부 확인 | |
Set<Map.Entry<K,V>> entrySet() | 키와 값을 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아 리턴 | |
V get(Object key) | 주어진 키의 값을 리턴 | |
boolean isEmpty() | 컬렉션이 비어 있는지 여부 | |
Set<K> keySet() | 모든 키를 Set 객체에 담아서 리턴 | |
int size() | 저장된 키의 총 개수를 리턴 | |
Collection<V> values() | 저장된 모든 값 Collection에 담아서 리턴 | |
객체 삭제 | void clear() | 모든 Map.Entry(키와 값)을 삭제 |
V remove(Object key) | 주어진 키와 일치하는 Map.Entry 삭제, 삭제되면 값을 리턴 |
'국비지원 공부 정리 > Java' 카테고리의 다른 글
자바의 재네릭과 와일드카드 (0) | 2025.04.09 |
---|---|
Wrapper 클래스 - 기본 변수를 포장 (0) | 2025.04.09 |
추상 클래스와 인터페이스 (0) | 2025.04.08 |
객체지향 프로그래밍과 객체 (0) | 2025.04.08 |
JAVA 예외처리 (0) | 2025.04.08 |