티스토리 뷰

반응형

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
TreeSet

순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.

 List

ArrayList
LinkedList
Vector

순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.

 Queue

LinkedList
PriorityQueue

 List와 유사

 Map

Hashtable
HashMap
TreeMap

 키(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);
    }
}

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday