2013년 6월 1일 토요일

Set 인터페이스

Set은 순서에 상관없이, 어떤 데이터가 존재하는지를 확인하기 위한 용도로 많이 사용된다.
 -> 중복되는것을 방지하고, 원하는 값이 포함되어 있는지를 확인하는 것.

    : 주요 클래스 : HashSet, TreeSet, LinkedHashSet

HashSet : 순서가 전혀 필요 없는 데이터를 해시 테이블에 저장한다. Set 중에 성능이 제일 좋음

TreeSet : 저장된 데이터의 값에 따라서 정렬되는 셋이다. red-black이라는 트리타입으로 값이
               저장되며 HashSet보다 약간 느리다.

LinkedHashSet : 연결된 목록 타입으로 구현된 해시 테이블에 데이터를 저장한다.
                            저장된 순서에 따라서 값이 정렬. 제일 느림

p.s  : red-black : http://ko.wikipedia.org/wiki/레드-블랙_트리

HashSet
  : Object -> AbstractCollection<E> -> AbstractSet<E> -> HashSet<E>

AbstractSet은 3개의 메소드만 구현되어 있다.
 -> equals(), hashCode(), removeAll()
 -> equals()와 hashCode() 메소드를 ㄱ현하는 부분은 Set에서 매우 중요.

 : 로드팩터 : (데이터 개수) / (저장 공간) 을 의미.

주요 메소드
  add(E e) : 데이터 추가
  clear() : 모든 데이터 삭제
  clone() : HashSet객체를 복제한다. 하지만 담겨있는 데이터들은 복제하지 않는다.
  contains(Object o) : 지정한 객체가 존재하는지 확인
  isEmpty() : 데이터가 있는지 확인
  iterator() : 데이터를 꺼내기 위한 Iterator 객체를 리턴

 
 LinkedList 클래스
    : A라는 하나의 값이 추가되면 열차의 맨 앞칸에 데이터를 집어 넣는다. 이때 LinkedList의 가장 앞의 값도 A이며, 가장 끝에 있는 값도 A이다.  이 상태에서 B라는 데이터를 더 집어 넣으면 가장 앞에 있는 값은  A가 되고 가장 뒤에 있는 값은 B가 된다.
      여기서 A는 뒤에 B가 있다는 것을, B는 A가 앞에 있다는 것을 기억하고 있다.
       그 다음에 C라는 값을 집어 넣으면 가장 앞에는 A, 그 다음에는 B 마지막에는 C가 위치한다.
      여기서 LinkedList는 앞에 있는 애와 뒤에 있는 애만 기억한다. 다시 말해서 A는 뒤에 있는 값이 B라는 것만 알고, C가 있따는 것을 생각도 안한다.
 
       배열의 중간에 있는 데이터가 지속적으로 삭제되고, 추가될 경우에는 LinkedList가 배열보다 메모리 공간 측면에서 훨씬 유리하다.
       그 이유는 LinkedList는 중간에 있는 데이터를 삭제하면, 지운 데이터의 앞에 있는 데이터와 뒤에 있는 데이터를 연결하면 그만이다.
       LinkedList가 자체가 List이면서 Queue, Deque가 된다.
 
    : Object -> AbstractionCollection<E> -> AbstractList<E> -> AbstractSequentialList<E> -> LinkedList<E>
 
     : 구현한 인터페이스 :  Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E>
 
    : addFirst(Object) : LinkedList객체의 가장 앞에 데이터를 추가한다.
    : addLast(Object) : LinkedList 객체의 가장 뒤에 데이터를 추가한다.
    : set(int, Object) : LinkedList 객체의 특정 위치에 있는 데이터를 수정한다. 그리고 기존에
                                 있던 데이터를 리턴한다.
 
    : getFirst(), peekFirst(), peek(), element() : 객체의 맨 앞에 있는 데이터를 리턴한다.
    : getLast(), peekLast() : 객체의 맨뒤에 있는 데이터를 리턴.
 
    : remove(), removeFirst(), poll(), pollFirst() : 객체의 가장 앞에 있는 데이터를 삭제하고 리턴
    : pollLast(), removeLast() : 객체의 가장 끝에 있는 데이터를 삭제하고 리턴
    : remove(int) : 매개 변수에 지정된 위치에 있는 데이터를 삭제하고 리턴
 
    : listItreator(int) : 매개변수가 지정된 위치로부터의 데이터를 검색하기 위한 ListIterator 객체를 리턴한다.
 
    : Set : 중복된 데이터를 처리
    : Queue : 먼저 들어온 데이터를 먼저 처리 FIFO
                  : 여러 쓰레드에서 들어오는 작업을 순차적으로 처리할대 많이 사용
 
 

댓글 없음:

댓글 쓰기