Set
- 생성자가 없는 인터페이스
HashSet, TreeSet등으로 응용하여 사용 가능
- 생성자가 존재하는 클래스인 HashSet 를 사용하여 Set 를 생성
- 순서가 없는 데이터의 집합 (데이터 중복 허용 안함)
- 중복을 허용하지 않도록 유지 가능
사용할 때
기능
- 선언 :
Set<Integer> intSet 형태로 선언
- 생성 :
new HashSet<Integer>(); 형태로 생성
주요 기능
- 추가 :
add(추가할 값) 형태로 값을 맨 위에 추가
- 조회 :
get(초회할 순번) 형태로 순번에 있는 값을 조회
- 삭제 :
remove(삭제할 값) 형태로 삭제할 값을 직접 지정
- 포함확인 :
contains(포함확인 할 값) 형태로 해당값이 포함되어있는지 boolean 값으로 응답 받음
Set의 자식 클래스
HashSet : 가장 빠르며 순서를 전혀 예측할 수 없음
TreeSet : 정렬된 순서대로 보관하며 정렬 방법을 지정할 수 있음
LinkedHashSet : 추가된 순서, 또는 가장 최근에 접근한 순서대로 접근 가능
즉, 보통 HashSet 을 쓰는데 순서보장이 필요하면 LinkedHashSet 을 주로 사용
예시
// Set
// (사용하기 위해선 import java.util.Set; 와 java.util.HashSet; 를 추가해야 함)
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> intSet = new HashSet<Integer>(); // 선언 및 생성
intSet.add(1);
intSet.add(2);
intSet.add(3);
intSet.add(3); // 중복된 값은 덮어씁니다.
intSet.add(3); // 중복된 값은 덮어씁니다.
for (Integer value : intSet) {
System.out.println(value); // 1,2,3 출력
}
// contains()
System.out.println(intSet.contains(2)); // true 출력
System.out.println(intSet.contains(4)); // false 출력
// remove()
intSet.remove(3); // 3 삭제
for (Integer value : intSet) {
System.out.println(value); // 1,2 출력
}
}
}