개발일지/Java

Java Set<E>, HashSet, TreeSet

2022. 9. 17. 17:00
목차
  1. Set
  2. HashSet
  3. TreeSet
728x90

수학에서의 Set은 집합을 의미하는데 집합은 일반적으로 중복을 허용하지 않는다.

자바 컬렉션에서의 Set은 수학에서의 집합과 유사하다.

 

Set

  • 중복을 허용하지 않는다
  • 저장 순서를 유지하지 않는다

Set 인터페이스에 정의된 메서드들은 다음과 같습니다.

기능 리턴 타입 메서드 설명
객체 추가 boolean add(Object o) 주어진 객체를 추가하고, 성공하면 true를, 중복 객체면 false를 반환합니다.
객체 검색 boolean contains(Object o) 주어진 객체가 Set에 존재하는지 확인합니다.
boolean isEmpty() Set이 비어있는지 확인합니다.
Iterator Iterator() 저장된 객체를 하나씩 읽어오는 반복자를 리턴합니다.
int size() 저장되어 있는 전체 객체의 수를 리턴합니다.
객체 삭제 void clear() Set에 저장되어져 있는 모든 객체를 삭제합니다.
boolean remove(Object o) 주어진 객체를 삭제합니다.

HashSet

Set 인터페이스를 구현한 가장 대표적인 컬렉션 클래스

  • 중복을 허용하지 않는다
  • 저장 순서를 유지하지 않는다
import java.util.*;

public class Main {
    public static void main(String[] args) {

        // HashSet 생성
        HashSet<String> languages = new HashSet<String>();

        // HashSet에 객체 추가
        languages.add("Java");
        languages.add("Python");
        languages.add("Javascript");
        languages.add("C++");
        languages.add("Kotlin");
        languages.add("Ruby");
        languages.add("Java"); // 중복

        // 반복자 생성하여 it에 할당
        Iterator it = languages.iterator();

        // 반복자를 통해 HashSet을 순회하며 각 요소들을 출력
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

TreeSet

  • 이진 탐색 트리 형태로 데이터를 저장 -> 정렬과 검색에 특화된 자료 구조
  • 중복 저장을 허용하지 않는다
  • 저장 순서를 유지하지 않는다
  • 자동으로 오름차순으로 정렬
import java.util.TreeSet;

public class Main {
    public static void main(String[] args) {

        // TreeSet 생성
        TreeSet<String> workers = new TreeSet<>();

        // TreeSet에 요소 추가
        workers.add("Lee Java");
        workers.add("Park Hacker");
        workers.add("Kim Coding");

        System.out.println(workers);
        System.out.println(workers.first());
        System.out.println(workers.last());
        System.out.println(workers.higher("Lee"));
        System.out.println(workers.subSet("Kim", "Park"));
    }
}

이진 탐색 트리 구조

728x90
저작자표시 비영리 변경금지 (새창열림)

'개발일지 > Java' 카테고리의 다른 글

Java 애너테이션 (Annotation)  (0) 2022.09.19
Java Map<key, value>, HashMap  (0) 2022.09.17
Java Iterator  (0) 2022.09.17
Java List<E>, ArrayList, LinkedList  (1) 2022.09.14
Java 컬렉션 프레임워크 (Collection Framework)  (0) 2022.09.14
  1. Set
  2. HashSet
  3. TreeSet
'개발일지/Java' 카테고리의 다른 글
  • Java 애너테이션 (Annotation)
  • Java Map<key, value>, HashMap
  • Java Iterator
  • Java List<E>, ArrayList, LinkedList
E-room
E-room
나의 성취 기록들
E-room Achievement Logs나의 성취 기록들
E-room
E-room Achievement Logs
E-room
전체
오늘
어제
  • 분류 전체보기
    • 개발일지
      • 돌픽
      • Spring
      • Algorithm
      • Java
      • Node.js
      • Python
      • DataBase
      • 웹개발
      • JavaScript
      • 컴퓨터지식
      • Django
    • 이것저것
    • 피드백 감사히 받겠습니다

블로그 메뉴

  • 태그
  • Github
  • 돌픽-이상형월드컵

인기 글

최근 글

최근 댓글

태그

  • 완전탐색
  • 백준
  • 다이나믹
  • dfs
  • 자바
  • 프로그래밍
  • 순열
  • boot
  • javascript
  • API
  • algorithm
  • search
  • 자료구조
  • 백트래킹
  • 생활코딩
  • SQL
  • Django
  • Spring
  • 파이썬
  • mysql
  • python
  • 알고리즘
  • 탐색
  • 스파르타코딩클럽
  • 조합
  • Java
  • 수열
  • 재귀
  • JPA
  • dp

공지사항

hELLO · Designed By 정상우.
E-room
Java Set<E>, HashSet, TreeSet
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.