[JAVA] 중복을 허용하지 않는 HashSet

2025. 5. 14. 15:24·공부/JAVA

HashSet

자바에서 제공하는 set 컬렉션 클래스 중 하나. (Collection 인터페이스를 상속받은 자식 interface)

중복을 허용하지 않고, 순서를 유지하지 않는 데이터 저장 구조.

기본적으로 HashMap을 기반으로 동작하며, 값을 Map의 key로 저장.

 

같은 값이 여러 번 들어오는 걸 막고 싶을 때 / 빠르게 포함 여부(contains())를 확인하고 싶을 때 / 순서보다는 중복 없는 값의 집합이 필요한 경우에 사용한다.

 

 

※ 형식

Set<자료형> 객체명 = new HashSet<자료형>();
HashSet<자료형> 객체명 = new HashSet<자료형>();

 

 

▶ 메서드

* 요소 추가

Set<String> animals = new HashSet<>();
animals.add("cat");
animals.add("dog");
animals.add("cat");

System.out.println(animals); 
// => [cat, dog]

add(추가할 값) : 마지막에 값을 추가한다.

add(인덱스번호, 추가할 값) : 해당 인덱스에 값을 추가하고 기존의 인덱스 번호부터 ~ 마지막 인덱스까지 한 칸씩 뒤로 미룬다.

요소 추가할 때 중복값은 무시되고 한 번만 저장된다.

 

 

* 요소 제거

animals.remove("cat");

System.out.println(animals);
// => [dog]

remove(객체) : 객체를 삭제한다.

remove(값) : 처음 인덱스부터 순서대로 겁색항 처음 해당되는 값만 삭제한다.(중복값이 존재하는 경우는 맨 처음 값만 제거됨)

clear() :  해당 객체를 주소값만 제외한 요소 전체를 제거한다. 

 

 

* 요소 포함 여부 확인

System.out.println(animals.contains("cat")); // => false
System.out.println(animals.contains("dog")); // => true

contains(객체) :  요소의 포함 여부를 확인한다.

 

animals.clear(); // => 객체 비우기
System.out.println(animals); // => []

System.out.println(animals.inEmpty()); //=> true (비어있음)

isEmpty() : 객체가 비어있음을 확인

 

 

* 저장된 요소 크기(개수) 

animals.add("hamster");
animals.add("bird");

System.out.println(animals.size()); // => 2

size() : 객체의 크기

 

 

* 반복

// 형식
// Iterator<자료형> 객체명 = 한 줄로 나열된 객체명.iterator();

Iterator<String> a = animals.iterator();
while (a.hasNext()) {
    System.out.println(a.next());
}

Iterator  : 한 줄로 나열된(순서 상관 없음. Set, List 가능) 데이터를 하나씩 떼어서 반복해서 가져올 수 있는 자료형

hasNext() : 다음 요소가 있는지 확인, 데이터를 가져오지 않음. true / false(boolean)으로 값의 유무를 반환함.

next(): 다음의 요소 한 개를 가져옴. 해당 값을 반환함

 

 

 

 

 

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

'공부 > JAVA' 카테고리의 다른 글

[JAVA] 문자열 쪼개기 StringTokenizer  (0) 2025.05.01
[JAVA] BufferedReader와 BufferedWriter  (0) 2025.04.30
[JAVA] 문자열 비교 equals()  (0) 2025.04.08
[Java] 특정 문자 인덱스, 배열 인덱스를 찾는 indexOf()  (0) 2025.02.23
[JAVA] ArrayList  (0) 2025.02.08
'공부/JAVA' 카테고리의 다른 글
  • [JAVA] 문자열 쪼개기 StringTokenizer
  • [JAVA] BufferedReader와 BufferedWriter
  • [JAVA] 문자열 비교 equals()
  • [Java] 특정 문자 인덱스, 배열 인덱스를 찾는 indexOf()
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    업무자동화
    데이터연동
    코테
    부스트코스강의
    git명령어
    코딩테스트_입문
    Java
    부스트코스
    알고리즘
    프로그래머스
    책첵개발일지
    CS50
    오라클에러
    lombok
    springbot
    에러
    ORACLE에러
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[JAVA] 중복을 허용하지 않는 HashSet
상단으로

티스토리툴바