728x90
컬렉션 API
다수의 데이터를 쉽게 처리할 수 있는 표준화 된 방법을 제공하는 클래스이다. 크게 Set
List
Map
의 3가지 타입 API를 제공
- 참조형만 저장 가능. 기본형은
wrapper
클래스 사용 👉 wrapper클래스 바로가기 - 객체를 저장할 때마다 자동으로 크기가 늘어난다
- 저장된 객체에 삽입, 삭제, 수정이 가능하다.
- Set : 순서x 중복x
- List : 순서o 중복o
- Map : 키와 값의 쌍으로 저장되고 순서x
Set 계열
HashSet
: Hash를 사용하여 처리속도가 빠름LinkedHashSet
: HashSet에 추가되는 순서를 유지TreeSet
: 객체의 Hash값에 의한 오름차순의 정렬 유지
List 계열
ArrayList
: 순서가 있고 중복 저장가능, 동기화 제공XLinkedList
: List에서 앞뒤로 데이터를 추가하거나 삭제하는데 효율적Vector
: 동기화 제공. 가장 성능이 좋지 않다
💡 데이터를 순차적으로 추가/수정/삭제할 때는 ArrayList 비순차적으로 추가/수정/삭제할 때는 LinkedList
✅ 자료 삭제 시 주의사항
- 반복문을 이용하여 요소를 삭제할 때, 거꾸로 삭제 권장 → 앞에서 부터 삭제 시, size가 줄어들어 반복 index를 하나 줄여줘야함
- forEach 문장을 사용할 때는 Collection 크기가 불변해야 함
Map 계열
HashMap
: Hash를 사용하여 성능 좋음LinkedHashMap
: Map에 추가되는 순서를 유지HashTable
: 동기화 제공
💡 동기화(Synchronization)는 작업들 사이의 수행 시기를 맞추는 것이다.
동기화된 Collection은 멀티 스레드 환경에서 하나의 스레드가 요소를 안전하게 처리하도록 도와주지만, 전체 요소를 빠르게 처리하지는 못한다
// TODO: kate의 전화번호가 있나요?
System.out.println(map.get("kate"));
System.out.println(map.containsKey("kate"));
// TODO: map이 가지고 있는 key와 연결된 value 출력
Set<String> keys = map.keySet();
for(String key : keys) {
System.out.println("key: " + key + ", value: " + map.get(key));
}
// TODO: 값이 4567인 사람의 이름은?
Set<Entry<String, String>> entries = map.entrySet();
for(Entry<String, String> entry : entries) {
if (entry.getValue().equals("4567")) {
System.out.println(entry.getKey());
}
}
컬렉션 관련 인터페이스
Collection 인터페이스
메서드 | 설명 |
---|---|
💡 add(o) | 해당하는 객체를 Collection에 추가 |
💡 remove(o) | 해당하는 객체 제거 |
💡 clear() | Collection의 모든 객체 삭제 |
💡 isEmpty() | Collection이 비어있으면 true |
💡 size() | Collection에 저장된 객체의 개수 반환 |
💡 toArray() | Collection에 저장된 객체를 배열로 반환 |
Map 인터페이스
메서드 | 설명 |
---|---|
💡 put(key, value) | key 값에 value 객체를 저장 |
💡 clear() | Map의 모든 객체 삭제 |
💡 isEmpty() | Map이 비어있으면 true |
💡 size() | Map에 저장된 객체의 개수 반환 |
💡 keySet() | Map에 저장된 모든 Key 객체를 반환 |
728x90
'Language > JAVA' 카테고리의 다른 글
[JAVA] 표준 API 함수적 인터페이스 - 람다식 및 메서드 참조(Method Reference) (0) | 2023.09.07 |
---|---|
[JAVA] 람다 표현식의 개념과 특징 (0) | 2023.09.07 |
[JAVA] 예외(Exception) 처리 (0) | 2023.07.24 |
[JAVA] 유틸리티 클래스 (Utility Class) (0) | 2023.07.24 |
[JAVA] Wrapper Class (래퍼 클래스) (0) | 2023.07.24 |