Java
[Java] 컬렉션
Dev_Fuji
2024. 6. 11. 21:10
컬렉션
- 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수있도록 관련된 인터페이스와 클래스들을 util에 포함
- 이를 컬렉션 프레임워크라고 부른다.
- List와 Set은 객체를 추가, 삭제, 검색하는 방법에 있어서 공통점이 있어 공통 메소드를 모아 Collection 인터페이스를 정의 및 상속
- Map은 key,value를 한쌍으로 묶어서 관리
인터페이스 구분 | 특징 | 구현 클래스 | |
Collection | List | 순서를 유지하고 저장 중복저장 가능 |
ArrayList, Vector, LinkedList |
Set | 순서 유지 X 중복 저장 가능 |
HashSet,TreeSet | |
Map | 키는 중복이 안 됨 키와 값을 같이 저장 |
HashMap, HashTable |
List
- 객체를 인덱스로 관리
- 객체를 저장하면 인덱스 부여 , 인덱스로 검색 삭제기능 제공
기능 | 메소드 | 설명 |
객체 추가 | add(E e) | 주어진 객체를 맨 끝에 추가 |
add(int index, E e) | 주어진 객체를 인덱스에 추가 | |
객체검색 | contains(E e) | 객체가 있는지 확인, 없으면 -1 |
get(int index) | index에 저장된 객체를 리턴 | |
int size() | 전체 객체의 수 리턴 | |
객체삭제 | remove(int index) | 주어진 객체를 삭제 |
ArrayList
- 크기 제한 없이 객체 추가 가능
- null 및 중복 저장 가능
- 삭제와 삽입이 많은 곳에서는 좋지 않다.
=> 삭제,삽입 할 때마다 인덱스가 변경되므로 성능 저하
LinkedList
- 인접 객체를 체인처럼 연결해서 관리
- 삭제와 삽입이 많은 곳에서는 좋다.
=> 앞,뒤 링크만 변경하면 됨
Set
- 저장순서를 유지하지 않는다.
- 중복 저장이 불가능하다.
기능 | 메소드 | 설명 |
객체 추가 | boolean add(E e) | 저장에 성공하면 true, 실패는 false |
객체검색 | boolean contains(Object O) | 객체가 저장된 여부를 확인 |
isEmpty() | 컬렉션이 비어있는지 확인 | |
iterator<E> iterator | 지정된 객체를 한 번씩 가져오는 반복자 | |
int size() | 저장되어 있는 전체 객체 수 리턴 | |
객체 삭제 | void clear | 객체 모두 삭제 |
boolean remove(Object o) | 주어진 객체를 삭제 |
HashSet
- 동일한 객체를 중복 저장하지 않는다.
=> hashCode() 리턴값 true && equals() 리턴값 true => 저장X
HashMap
- Key: Value의 구조를 가진다.
- HashMap<String,Object> 구조를 가장 많이 가진다.
- 트리 구조로 되어있어 입력한 순서대로 출력되지 않는다.
Iterator<String> it = hashMap.keySet().iterator();
while (it2.hasNext()) {
String key = it2.next();
System.out.println(key + ":" + hashMap1.get(key));
}
TreeMap<String,Object> tree = new TreeMap<>(hashmap); //TreeMap을 통한 정렬, 무거움
Iterator<String> it = tree.descendingKeySet().iterator();
//keySet(): 오름정렬keySet
//descendingKeySet():내림정렬keySet
while (it.hasNext()) {
String key = it.next();
System.out.println(key + ":" + hashMap.get(key));
}