반응형
#1 컬렉션 프레임워크
- 자바는 자료구조를 미리 구현하여 java.util 패키지에서 컬렉션 프레임워크를 제공
- 기존에 존재했던 자료 구조에 인터페이스로 설계된 기능을 클래스를 통해 제공하여 데이터 관리에 용이한 자료 구조 객체를 구조화한 것
- 컬렉션: 기존의 List, Map, Set 등의 자료 구조
- 프레임워크: 클래스와 인터페이스를 묶어 놓은 개념
- List와 Set 인터페이스는 Collection 인터페이스를 상속받지만, Map 인터페이스는 구조상 차이로 별도로 정의
인터페이스 | 설명 | 특징 | 대표 구현 클래스 |
List | 순서가 있는 데이터의 집합 | 데이터 중복 oo | ArrayList, LinkedList, Vector |
Set | 순서를 유지하지 않는 데이터의 집합 | 데이터 중복 xx | HashSet, LinkedHashSet |
Map | 키(key) - 값(value)의 쌍으로 이뤄진 데이터의 집합 |
순서 유지 xx 키 중복 xx 값 중복 oo |
HashMap, LinkedHashMap, Properties |
#2 제네릭
- 자바의 제네릭<>은 데이터의 타입을 일반화한다는 것을 의미
- 클래스나 메서드 정의 시 일반화하여 사용할 데이터 타입을 컴파일할 때 미리 지정
- 타입 검사나 변환과 같은 번거로운 작업 생략 가능
- 클래스나 메서드 내부에 사용될 데이터 타입의 안정성 높임
#3 List 컬렉션
- 배열과 비슷하게 index로 객체를 관리
- 배열과는 다르게 크기의 제한이 없으며 삽입, 삭제, 변경의 기능이 자유로움
- List가 제공하는 주요 메서드
메서드 | 기능 |
void add(E e) | 데이터를 순차적으로 삽입 |
void add(int index, E e) | 원하는 index 위치에 삽입 |
void set(int index, E e) | 원하는 index 위치에 값 변경 |
E get(int index) | 선택된 index 위치의 값 반환 |
void remove(int index) | 선택된 index 위치의 값 삭제 |
void clear() | 모든 데이터 삭제 |
int size() | 저장된 데이터의 개수 반환 |
boolean contains(Object o) | 데이터 존재 여부 확인 |
▶ ArrayList
- 데이터를 순차적으로 저장
- 데이터가 삽입될 때마다 크기가 증가하고, 배열을 삭제하면 공간이 감소
- index를 기준으로 값을 삽입하거나 추출
- 데이터를 출력하거나 검색할 경우에 사용하면 좋음
▶ LinkedList
- Node 객체를 기반으로 데이터를 저장
- Node 객체는 데이터와 자신 다음에 올 데이터의 주소를 값으로 가짐
- 데이터의 삽입과 삭제가 빈번할 경우에 사용하면 좋음
#4 Set 컬렉션
▶ 내부 클래스란?
- List 컬렉션과 다르게 객체의 저장 순서를 저장하지 않으며, 데이터 중복 허용 xxx
- 데이터를 저장할 때 index를 부여하지 않아, 데이터가 입력된 순서로 출력된다는 보장 xx
▶ HashSet, TreeSet, LinkedHashSet
#5 반복자 Iterator
- Iterator<E>는 List 컬렉션에서 제공하는 인터페이스로 사전적인 의미로는 '반복하다'라는 의미
- List 컬렉션의 요소를 순회하여 하나씩 추출하는 데 사용
- Iterator 주요 메서드
메서드 | 기능 |
boolean hasNext() | 다음 순회할 데이터 유무 확인, 가져올 객체가 있으면 true, 없으면 false 반환 |
E next() | 다음 위치의 데이터로 이동하여 반환 |
#6 Map 컬렉션
- List, Set 컬렉션과 달리 Map Interface가 별도로 존재하며 데이터를 List 계열의 컬렉션과 다르게 처리
- Map은 key 중복 허용 xx, value 중복 허용 oo
- 만약 Key가 중복된다면 기존에 있던 Key에 해당하는 Value값이 마지막으로 등록된 값으로 치환됨
- Map 컬렉션의 클래스 : HashMap, TreeMap, LinkedHashMap
- Map 컬렉션의 주요 메서드
메서드 | 기능 |
void put(K key, V value) | key에 대응하는 value 저장 |
E get(K key) | key에 대응하는 value 반환 |
boolean containsKey(K key) | key 존재 여부 검색 |
boolean containsValue(V value) | value 존재 여부 검색 |
Set<E> keySet() | 모든 key를 Set 컬렉션에 저장하여 반환 |
Set<Map.Entry> entrySet() | 모든 Map.Entry 객체를 Set에 담아서 반환 |
▶ HashMap<K, V>
- 해싱(hashing)을 통해 Key의 중복 여부를 판단
- 즉, key로 지정된 객체의 hashCode와 equals 메서드를 이용해 동일 여부를 판단
- < 선언 >
- Map <KEY, V> map = new HashMap<KEY, V>();
- Map <KEY, V> map = new HashMap<>();
※ HashSet/HashMap
: 객체 데이터를 value 또는 Key로 할 경우,
중복 객체 체크를 위해 해당 객체의 hashCode()와 equals() 메서드를 Override하여 구현해야 함
반응형
'개발 > Java' 카테고리의 다른 글
JAVA_18_Thread (1) | 2024.07.16 |
---|---|
JAVA_17_람다식 (2) | 2024.07.16 |
JAVA_15_기본 API 클래스 (1) | 2024.07.16 |
JAVA_14_예외 처리 (1) | 2024.07.16 |
JAVA_13_내부 클래스 (0) | 2024.07.16 |