본문 바로가기

건승하고있어요/Java

[Collection] Set - HashSet, TreeSet, LinkedHashSet

반응형

Set

-저장순서가 유지되지 않음

-객체를 중복해서 저장할 수 없음

-하나의 null만 저장 가능 


주요메소드

기능 

메소드 

설명

객체추가 

 boolean add(E e)

주어진 객체를 저장, 객체가 성공적으로 저장되면 true리턴, 중복객체면 false 리턴 

객체검색 

 boolean contains(Object o)

주어진 객체가 저장되어 있는지 여부 

 isEmpty()

컬렉션이 비어있는지 조사 

 Iterator<E> iterator()

저장된 객체를 한 번씩 가져오는 반복자 리턴 

 int Size()

저장되어 있는 전체 객체 수 리턴 

객체삭제 

 void clear()

저장된 모든 객체를 삭제 

 boolean remove(Object o) 

주어진 객체를 삭제 


Set컬렉션은 인덱스로 객체를 검색해서 가져오는 메소드가 없다. 대신 전체 객체를 대상으로 한 번씩 반복해서 가져오는 반복자인 Iterator를 제공한다. iterator()메소드를 호출하면 얻을 수 있다. 


Set<String> set = ...;

Iterator<String> iterator = set.iterator();


Iterator 인터페이스에 선언된 메소드

리턴타입 

메소드명 

설명 

boolean 

hasNext() 

가져올 객체가 있으면 true, 없으면 false 

next() 

컬렉션에서 하나의 객체를 가져온다.

void 

remove() 

Set컬렉션에서 객체를 제거한다. 


HashSet - 일반적인 경우


-집합이 필요하나 순서가 중요하지 않은 경우, 즉 오름차순 내림차순이 상관없는 경우에 사용

-동일한 객체는 중복 저장 하지 않음

-무엇이 들어있는지 혹은 무엇이 들어있지 않은지 확인하는데 사용


TreeSet - 순서가 중요한 경우(lower bound, upper bound)

-이진검색트리(레드블랙트리) 이용해서 구현

-삽입/삭제/제거연산의 시간복잡도가 logN

-순서가 보장됨(입력순이 아니라 오름차순 혹은 내림차순과 같이 정해진 순서)


LinkedHashSet - 입력한 순서가 중요한 경우

-해쉬테이블과 연결리스트를 이용해서 구현

-삽입/삭제/제거연산의 시간복잡도가 1

-입력한 순서, 추가한 순서가 보장됨


반응형