Set
Set은 List와는 다르게 객체(데이터)를 중복해서 저장할 수 없다. 또한 저장된 객체(데이터)를 인덱스로 관리하지 않기 때문에 저장 순서가 보장되지 않는다. 수학의 집합과 비슷한 내용이다. Set 컬렉션을 구현하는 대표적인 클래스들은 HashSet, TreeSet, LinkedHashSet 등이 있다. Set 컬렉션을 구현하는 클래스들이 공통적으로 사용하는 주요 메소드는 add, iterator, size, remove, clear 등이 있고 내용은 아래의 표와 같다.
Set은 인덱스로 객체를 관리하지 않기 때문에 데이터를 검색하기 위해서는 iterator() 메서드로 Iterator(반복자)를 생성하고 데이터를 가져와야 한다. 해당 내용에 대해서는 밑의 예제에서 알아보자.
HashSet
HashSet은 Set 컬렉션을 구현하는 대표적인 클래스이다. 데이터를 중복 저장할 수 없고 순서를 보장하지 않는다. HashSet을 생성하는 방법은 아래와 같다.
Set<E> 객체명 = new HashSet<E>();
예제를 통해서 HashSet 사용방법에 대해서 알아보자.
위의 예제를 실행하면 아래와 같은 출력 결과를 갖는다. 데이터의 순서가 보장되지 않고 데이터의 중복을 허용하지 않는 것을 알 수 있다. 또한 데이터를 가져오기 위해서 반복자(iterator)를 이용하였고 설명은 예제의 주석을 참고하면 된다.
HashSet에 객체를 저장하고 가져오는 방법은 아래와 같다.
위의 예제는 Member 클래스의 생성자를 통해 필드를 초기화하고 객체를 HashSet에 저장하여 값을 가져오는 방법이다.
위의 예제는 데이터를 키보드로 입력받아서 객체를 HashSet에 저장하고 Iterator를 통해 저장된 객체를 출력하는 조금 더 응용된 예제이다. 설명은 주석을 참고하면 된다.
TreeSet
TreeSet도 HashSet과 같이 중복된 데이터를 저장할 수 없고 입력한 순서대로 값을 저장하지 않는다. 차이점은 TreeSet은 기본적으로 오름차순으로 데이터를 정렬한다. 예제를 통해서 알아보자.
위의 예제를 실행하면 중복을 허용하지 않고 오름차순으로 데이터를 저장하는 것을 알 수 있다.
LinkedHashSet
LinkedHashSet도 중복된 데이터를 저장할 수 없다. 차이점은 입력된 순서대로 데이터를 관리한다.
예제를 실행하면 중복된 데이터는 제외되고 입력된 순서로 값을 출력하게 된다.
'자료구조' 카테고리의 다른 글
자바 스택(Stack), 큐(Queue) (0) | 2018.07.20 |
---|---|
JAVA 자바 Map 컬렉션 HashMap, Hashtable (0) | 2018.07.13 |
[JAVA 자바] Collection-List- (ArrayList, Vector, LinkedList) (0) | 2018.07.12 |
자바 collection 자료구조 의미 / 종류 / 차이점 (0) | 2018.07.11 |