Set
- 비선형 자료 구조 형태로 요소 저장
(순서가 없음, get()메서드 없음) -> (iterator()메서드로 객체 생성 후 데이터를 가져와야 한다.)
- 중복 저장 불가능(null값 하나만 저장 가능)
- 자식 클래스도 HashSet, TreeSet, LinkeHashSet이 있다
형식
Set<자료형> 객체명 = new 자식클래스명<>();
1. HashSet
- hashing이라는 방법을 활용해서 정보 저장
1). 값 추가
add(value); //값 추가
- 입력 값이 HashSet내부에 없으면 값 추가 후 true 반환, 이미 내부에 값 존재시 false 반환
2). 값 삭제
remove(value); // 값 삭제
clear(); //모든 값 삭제
- 입력 값이 HashSet내부에 있으면 값 삭제 후 true 반환, 내부에 값이 없으면 false 반환
3). HastSet 크기 구하기
size(); //HastSet 크기 구하기
4). 값 출력
Set<String> set = new HashSet<>(); //HashSet클래스 set 객체 생성
System.out.println(set); //set내 모든 값 [ ]로 묶어서 출력
Iterator<String> it = set.iterator(); //Iterator(반복자)
while(it.hasNext() ) {
System.out.print(it.next()+'\n');
}
System.out.println();
- Set에는 인덱스로 객체를 가져오는 get(index) 메소드가 없다.
대신 전체 객체를 대상으로 한 번씩 반복해서 가져오는 반복자(Iterator)를 사용.
Iterator에서 하나의 객체를 가져올 때는 next() 메소드를 사용.
hasNext() 메소드는 가져올 객체가 있으면 true를 리턴하고 없으면 false를 리턴.
5). 값 검색
contains(value); // 값 검색
- 입력 값이 HashSet내부에 있으면 true 반환
2. TreeSet
- 비선형 트리 기반 데이터 구조 구현
- 데이터 추가, 삭제시 HashSet보다 시간이 걸림
- 데이터 검색, 정렬시 더 효율적