Set 인터페이스
- 순서(인덱스)가 유지되지 않는 데이터의 집합
순서가 있긴 하지만 List처럼 인덱스로 접근할 수 없음. Iterator로 접근
- 중복 허용 X
Set 인터페이스를 구현하고 있는 클래스
- SortedSet, TreeSet, HashSet
List vs. Set
- List
- 입력한 데이터의 순서가 있음
- 중복 데이터 저장 가능
- Set
- 입력한 데이터의 순서 없음
- 중복 데이터 저장 불가
boolean add( )
- 데이터 추가 메서드
- Set의 마지막에 데이터 추가
- 성공하면 true, 실패하면 false 반환
- 중복 저장이 불가하기 때문에
- 중복 데이터를 add() 하면 false 반환됨
데이터 수정
- Set 은 데이터 수정 명령이 따로 없음
- 해당 자료를 삭제한 후 새로운 데이터 추가해야 함
remove(삭제할 자료)
clear()
Iterator
- Set은 데이터 순서가 없기 때문에 List처럼 하나씩 불러올 수 없음
- 데이터를 하나씩 가져오기 위해 Iterator로 처리해야 함
- Iterator 객체. Set의 iterator( ) 메서드 호출
Iterator it = hs1.iterator();
- Iterator는 인터페이스로 hasNext( ) 와 next( ) 를 가지고 있음
- hasNext( ) : 포인터 다음 위치에 데이터 있으면 true, 없으면 false
hasNext( )가 true 이면
- next( ) : 포인터를 다음위치로 이동하고, 해당 위치의 자료를 반환
Collection 유형의 객체들
- 서로 다른 자료 구조로 쉽게 변경해서 사용할 수 있음
- 다른 종류의 객체를 생성할 때 생성자에 변경할 데이터를 넣어주면 됨
Set<Integer> intRnd = new HashSet<>();
List<Integer> intRndList = new ArrayList<>(intRnd);
TreeSet
- HashSet 은 등록되는 순서를 알지 못함
- TreeSet은 자동정렬 기능이 들어가 있음
- 검색에 최적화되어 있음 (Tree = 검색속도!)
headSet
- 특정한 자료(기준값)보다 작은 자료를 찾아서 SortedSet으로 반환하는 메서드
headSet(기준값)
headSet(기준값, 논리값)
tailSet
- 특정한 자료(기준값)보다 큰 자료를 찾아서 SortedSet 으로 반환하는 메서드
tailSet(기준값)
tailSet(기준값, 논리값)
subSet
subSet(기준값1, 기준값2)
- 기준값1 ~ 기준값2 사이의 값을 가져옴
- 기준값1 : 포함 | 기준값2 : 미포함
subSet(기준값1, 논리값1, 기준값2, 논리값2)
- 각 기준값을 포함할 지 여부를 설정
- 논리값이 true 이면 포함