티스토리 뷰
Collection(컬렉션) : 데이터의 집합, 그룹
Java Collections Framework는 이러한 데이터, 자료구조인 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다. 개발에 소요되는 시간을 절약하면서 최적화된 알고리즘을 사용할 수 있다.
Java Collection Framework 의 상속구조
Collection 인터페이스에 선언된 주요 메서드
메서드 | 설명 |
boolean add(E e) | Collection에 객체를 추가 |
void clear() | Collection의 모든 객체 제거 |
Iterator<E> iterator | Collection을 순환할 반복자(Iterator)를 반환 |
boolean remove(Object o) | Collection에 매개변수에 해당하는 인스턴스가 존재할 경우 삭제 |
int size() | Collection에 있는 요소의 개수 반환 |
Collection 인터페이스 특징
인터페이스 |
구현클래스 |
특징 |
Set |
HashSet |
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. |
List |
ArrayList |
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. |
Queue |
LinkedList |
List와 유사 |
Map |
Hashtable |
키(Key), 값(Value)의 쌍으로 이루어진 데이터으 집합으로, 순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다. |
* Set 인터페이스 *
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
저장된 순서와 출력 순서는 다를 수 있다.
객체는 객체의 유일성함의 여부를 알기 위해 equals()와 hashCode() 메서드를 재정의함.
1) HashSet
- 가장빠른 임의 접근 속도
- 순서를 예측할 수 없음
2) TreeSet
- 객체의 정렬에 사용되는 클래스
- 내부적으로 이진 검색 트리(binary search tree)로 구현되어 있음
- 객체 비교를 위해 Comparable이나 Comparator 인터페이스를 구현해야함.
Comparable은 compareTo() 메서드를 구현 : 매개변수와 객체자신을 비교,
Comparator은 compare() 메서드 구현 : 두 개의 매개변수를 비교. 생성자에 매개변수로 전달
public class Member implements Comparable<Member>{
@Override
public int compareTo(Member m) {
return (this.memberId - m.memberId);
}
}
* List 인터페이스 *
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다
1) ArrayList
- 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어남
2) LinkedList
- 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용
- 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임
3) Vector
- 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 동기화처리가 일어나 비교적 성능이 좋지 않고 무거워 잘 쓰이지 않음
* Map 인터페이스 *
키(Key), 값(Value)의 쌍으로 이루어진 데이터의 집합으로,
순서는 유지되지 않으며 키(Key)의 중복을 허용하지 않으나 값(Value)의 중복은 허용한다.
검색을 위한 자료구조이며 key를 이용하여 값을 저장하거나 검색, 삭제 할 때 사용하면 편리함.
내부적으로 hash 방식으로 구현된다.
key가 되는 객체는 객체의 유일성함의 여부를 알기 위해 equals()와 hashCode() 메서드를 재정의함.
add 함수가 아닌 put(k,v)을 사용.
1) Hashtable
- HashMap보다는 느리지만 동기화 지원
- null불가
2) HashMap
- 중복과 순서가 허용되지 않으며 null값이 올 수 있다.
3) TreeMap
- 정렬된 순서대로 키(Key)와 값(Value)을 저장하여 검색이 빠름
- key에 사용되는 클래스에 Comparable, Comparator 인터페이스를 구현
Iterator 사용방법
// HashSet
public boolean removeMember(int memberId){
Iterator<Member> iterator = hashset.iterator();
while(iterator.hasNext()){
Member m = iterator.next();
if(m.getMemberId() == memberId){
hashset.remove(m);
return true;
}
}
System.out.println("없음!");
return false;
}
// HashMap 순회
public void showAll() {
Iterator<Integer> ir = hashmap.keySet().iterator();
while(ir.hasNext()){
int key = ir.next();
Member m = hashmap.get(key);
System.out.println(m);
}
}
'Java > 개념정리' 카테고리의 다른 글
[ Spring ] Java 설정 파일 사용 및 설명 (@Configuration, @Bean, @EnableWebMvc) (0) | 2021.02.19 |
---|---|
[ Java ] JDBC - PreparedStatement (0) | 2020.12.08 |
[ Java ] JDBC 사용하는 방법 (0) | 2020.12.08 |
[ Java ] 자바 Stream (스트림) 사용 방법 정리 (0) | 2020.11.28 |
[ Java ] abstract 와 interface의 기능 및 차이점 알아보기 (0) | 2020.11.27 |