일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Git
- 배열
- 초보코딩탈출
- 자바기초
- JShell
- Java
- 데이터베이스
- 초보코딩
- Elk
- 프로그래밍
- 이클립스
- JAVA기초
- spring
- 제이쉘
- 컴퓨터과학개론
- 기초코딩
- 자바프로그래밍
- eclips
- 알고리즘
- 자바 스프링
- 코딩초보
- 클래스
- 프로그래밍언어
- 자바
- 메소드
- 프로그래밍기초
- github
- 스프링 기초
- 스프링
- 리눅스
- Today
- Total
키보드워리어
[자바] Set 자료구조 살펴보기 본문
안녕하세요 【키보드 워리어】
⌨🗡🧑
블로그 방문자 여러분, 안경닦이입니다.
오늘은 SET 에 대해 알아보겠습니다.
HashSet,LinkedHashSet,TreeSet
Set은 순서나 위치가 없는 인터페이스로, 중복이 없는 유일한 것만 가질 수 있습니다.
예를 들어, "A", "B", "C", "B" 라는 문자열이 있을 때, Set은 "A", "B", "C" 라는 유일한 값만 가질 수 있습니다.
따라서, 같은 요소를 추가하면 추가되지 않는 Set의 특징이 있습니다.
A collection that contains no duplicate elements
Set 인터페이스를 구현하는 클래스로는 HashSet, LinkedHashSet, TreeSet 등이 있습니다.
HashSet은 저장된 순서나 정렬과 상관 없이 저장되는 클래스이고,
LinkedHashSet은 저장된 순서를 유지하지만 정렬은 지원하지 않는 클래스입니다.
마지막으로 TreeSet은 저장된 순서는 없지만, 정렬된 상태로 저장됩니다.
예를 들어, List<Character>로 "Keyboardwarrior"라는 문자열을 만들고 이를 HashSet, LinkedHashSet, TreeSet으로 변환하면, HashSet은 순서나 정렬이 없이 저장되지만, LinkedHashSet은 저장된 순서가 유지되며 정렬은 지원하지 않고, TreeSet은 저장된 순서는 없지만, 정렬된 상태로 저장됩니다.
Set은 유일한 결과를 원한다면, Set 인터페이스를 구현하는 클래스를 사용하고 정렬된 순서를 생각하면서 적절히 사용하시면 됩니다.
메서드 활용
TreeSet 클래스는 SortedSet 인터페이스를 구현하므로, 이 인터페이스의 메서드들을 사용할 수 있습니다.
1.floor(E e): 주어진 값보다 작거나 같은 바로 아래의 값 리턴, 없으면 null 리턴
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(3);
numbers.add(5);
Integer floorValue = numbers.floor(4);
System.out.println(floorValue); // 3
2. lower(E e): 주어진 값보다 작은 바로 아래의 값 리턴, 없으면 null 리턴
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(3);
numbers.add(5);
Integer lowerValue = numbers.lower(4);
System.out.println(lowerValue); // 3
같은 원리이지만 같은 값을 포함하는 ceiling,higher 메서드도 있습니다!
3. subSet(E fromElement, E toElement): fromElement 이상, toElement 미만인 범위의 Set 리턴
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(3);
numbers.add(5);
SortedSet<Integer> subset = numbers.subSet(2, 5);
System.out.println(subset); // [3]
4. headSet(E toElement): toElement 미만인 범위의 Set 리턴
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(3);
numbers.add(5);
SortedSet<Integer> headSet = numbers.headSet(4);
System.out.println(headSet); // [1, 3]
5. tailSet(E fromElement): fromElement 이상인 범위의 Set 리턴
TreeSet<Integer> numbers = new TreeSet<>();
numbers.add(1);
numbers.add(3);
numbers.add(5);
SortedSet<Integer> tailSet = numbers.tailSet(4);
System.out.println(tailSet); // [5]
'JAVA > 입문' 카테고리의 다른 글
[자바]Collection-Map 인터페이스 소개 (0) | 2023.04.26 |
---|---|
[자바] Collection 활용 - 2 (0) | 2023.04.10 |
[자바] ArrayList 활용 (0) | 2023.03.20 |
[자바] 컬렉션 소개: Java의 List 이해 (0) | 2023.03.16 |
[자바] 인터페이스에 관한 이야기 (interface) (0) | 2023.03.12 |