참치코더의 꿈 메모장

2021/08/24 Java- 컬렉션 프레임워크 Set 본문

JAVA

2021/08/24 Java- 컬렉션 프레임워크 Set

참치깡 2021. 8. 24. 20:16
728x90

Set 컬렉션

 

List 컬렉션은 객체의 저장 순서를 유지하지만 Set 컬렉션은 저장 순서가 유지되지 않는다.

또한 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있다.

 

Set 컬렉션에는 HashSet, LinkedHashSet, TreeSet등이 있다.

 

Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스의 메소드

객체 추가 boolean add(E e) 주어진 객체를 저장한다.
객체가 성공적으로 저장되면 true를 
리턴하고, 중복 객체면 false를 리턴한다.
객체 검색 boolean contains(Object o) 주어진 객체가 저장되어 있는지 
조사한다.
boolean isEmpty( ) 컬렉션이 비어 있는지 조사한다.
Iterator<E> iterator( ) 저장된 객체를 한 번씩 가져오는 
반복자를 리턴한다.
int size( ) 저장되어 있는 전체 객체 수를
리턴한다.
객체 삭제 void clear( ) 저장된 모든 객체를 삭제한다.
boolean remove(Object o) 주어진 객체를 삭제한다.

 

Set 컬렉션은 인덱스로 객체를 검색해서 가져오는 메소드가 없다. 

대신 전체 객체를 대상으로 한 번씩 반복해서 가져오는 반복자(Iterator)를 제공한다.

 

Set<String> set = ...;

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

 

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

boolean hasNext( ) 가져올 객체가 있으면 true를 리턴하고 없으면 false를 리턴한다.
E next( ) 컬렉션에서 하나의 객체를 가져온다.
void remove( ) Set 컬렉션에서 객체를 제거한다.

 

Set<String> set = ...;

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

while(iterator.hasNext( ) ) {

  String str = iterator.next( );

}

 

Iterator를 사용하지 않더라도 향상된 for문을 이용해서 전체 객체를 대상으로 반복할 수 잇따.

 

Set<String> set = ...;

for(String str : set){

}

 

HashSet

 

HashSet은 Set 인터페이스의 구현 클래스이다.

 

Set<E> set = new HashSet<E>( );

 

* Set<String> set = new HashSet<>( );  //hashSet의 E 파라미터를 생략하면 왼쪽 set에 지정된 타입을 따라 감

 

HashSet이 판단하는 동일한 객체란 꼭 같은 인스턴스를 뜻하지는 않는다.

HashSet은 객체를 저장하기 전에 먼저 hashCode( )메소드를 호출해서 해시코드를 얻어내고,

이미 저장되어 있는 객체들의 해시코드와 비교한다.

 

만약 동일한 해시코드가 있다면 equals( ) 메소드로 두 객체를 비교해서 true가 나오면 동일한 객체로 판단하고

중복저장 하지 않는다.

 

 

728x90
Comments