요소의 저장 순서를 유지하지 않습니다.
같은 요소의 중복 저장을 허용하지 않습니다.
Set<String> set =...;
Iteratro<String>iterator =set.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();
}
Set<String> set =...;
for(String str : set){
}
다음예제는 Set컬렉션에서 "홍길동"을 제거합니다.
while(iterator.hasNext()){
String str = iterator.next();
if(str.equals("홍길동"){
iterator.remove();
}
}
HashSet은 Set인터페이스의 구현 클래스입니다.
Set<E> set = new HashSet<E>();
타입 파라미터 E에는 컬렉션에 저장할 객체 타입을 지정하면 됩니다. 예를 들어 String객체를 저장하는 HashSet은 다음과 같이 생성할 수 있습니다.
Set<String> set = new HashSet<String>();
SET<String> set = new HashSet<>();
HashSet은 객체들을 순서없이 저장하고 동일한 객체는 중복 저장하지 않습니다.
HashSet<String> hs01 = new HashSet<String>();
HashSet<String> hs02 = new HashSet<String>();
// add() 메소드를 이용한 요소의 저장
hs01.add("홍길동");
hs01.add("이순신");
System.out.println(hs01.add("임꺽정"));
System.out.println(hs01.add("임꺽정")); // 중복된 요소의 저장
// Enhanced for 문과 get() 메소드를 이용한 요소의 출력
for (String e : hs01) {
System.out.print(e + " ");
}
// add() 메소드를 이용한 요소의 저장
hs02.add("임꺽정");
hs02.add("홍길동");
hs02.add("이순신");
// iterator() 메소드를 이용한 요소의 출력
Iterator<String> iter02 = hs02.iterator();
while (iter02.hasNext()) {
System.out.print(iter02.next() + " ");
}
// size() 메소드를 이용한 요소의 총 개수
System.out.println("집합의 크기 : " + hs02.size());
-해당 요소에서 HashCOde()메서드를 호출하여 반환된 해시값으로 검색할 범위를 결정합니다.
-해당 범위 내의 요소들을 equals()메서드로 비교합니다.
TreeSet클래스는 데이터가 정렬된 상태로 저장되는 이진 검색 트리(binary serach tree)의 형태로 요소를 저장합니다.(이진검색은 오름차순으로 정렬된 리스트)
-이진 검색트리는 데이터를 추가하거나 제거하는 등의 기본 동작 시간이 매우 빠르다.
package 컬렉션프레임워크;
import java.util.*;
public class TreeSetExample {
public static void main(String[] args) {
TreeSet<Integer> ts = new TreeSet<Integer>();
// add() 메소드를 이용한 요소의 저장
ts.add(30);
ts.add(40);
ts.add(20);
ts.add(10);
// Enhanced for 문과 get() 메소드를 이용한 요소의 출력
for (int e : ts) {
System.out.print(e + " ");
}
System.out.println();
// remove() 메소드를 이용한 요소의 제거
ts.remove(40);
// iterator() 메소드를 이용한 요소의 출력
Iterator<Integer> iter = ts.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " ");
}
System.out.println();
// size() 메소드를 이용한 요소의 총 개수
System.out.println("이진 검색 트리의 크기 : " + ts.size());
// subSet() 메소드를 이용한 부분 집합의 출력
System.out.println(ts.subSet(10, 20));
System.out.println(ts.subSet(10, true, 20, true));
}
}