📌Set 인터페이스를 구현하는 클래스
- HashSet, TreeSet, LinkedHashSet 등
📌Set 특징
-List와 다르게 객체를 중복해서 저장할 수 없다.
ex) 20 10 10 30 40
20 10 30 40만 저장됨.
중복해서 저장할 수 없는 대신에 순서가 보장되지 않는다.
📌Set 공통 메소드
boolean add(E e)
- 객체 저장 후 성공이면 true, 실패면 false를 리턴
boolean contains(Object o)
- 객체가 있는지 여부 리턴
boolean isEmpty()
- 컬렉션이 비어있는지 확인
boolean remove(Object o)
- 인자로 받은 요소를 삭제한다.
int size()
- 요소의 개수를 리턴
Object[] toArray()
-set을 array로 바꾼다.
<T> T[] toArray(T[] a)
-set을 인자로 받은 배열에 저장한다.
📌HashSet
Set 컬렉션을 구현하는 대표적인 클래스이다.
ex) Set<Integer> set = new HashSet<>();
📌TreeSet 특징
이진 탐색 트리 구조를 가짐
- HashSet보다 데이터의 추가와 삭제는 느리지만, 검색과 정렬에는 빠르다.
- 기본적으로는 오름차순으로 정렬되지만, comparator를 통해 정렬 방법을 수정할 수 있다.
📌TreeSet 메소드
E first()
- set에서 가장 첫 번째 값, 즉, 가장 작은 값 리턴
E last()
- set에서 최댓값 리턴
E floor(E e)
- 인자와 같은 객체 리턴, 만약 없다면 작은 값 중에 가장 큰 값을 리턴, 이것도 없으면 null 리턴
E ceiling(E e)
- 인자와 같은 객체 리턴, 만약 없다면 큰 값 중에 가장 작은 값 리턴, 이것도 없으면 null 리턴
E lower(E e)
- 인자보다 작은 값을 가진 객체 중에 가장 큰 값 리턴, 없으면 null 리턴
E higher(E e)
- 인자보다 큰 값을 가진 객체 중에 가장 작은 값 리턴, 없으면 null 리턴
📌LinkedHashSet
LinkedHashSet도 중복된 데이터를 저장하지 않고, 입력한 순서대로 데이터가 저장이 된다.
📌Set을 List로 변환하는 방법은
Set<Integer> set = new HashSet<>();
List<Integer> list = new ArrayList<>(set); 이런 식으로 하면 된다.
'Java' 카테고리의 다른 글
Scanner 사용 nextInt() / nextLine() / next() (0) | 2021.03.30 |
---|---|
컬렉션 프레임워크 : Map (0) | 2021.01.13 |
ArrayList<> 안에 ArrayList<> : 이차원 배열 (0) | 2020.09.20 |
StringTokenizer & StringBuilder & StringBuffer (0) | 2020.09.20 |
ArrayList 안에 ArrayList ≒ 2차원배열 (0) | 2020.09.16 |