[JAVA] HashSet이란? 메소드 종류 정리

세하·2025년 2월 9일

JAVA

목록 보기
3/17

HashSet

HashSet의 특징

Set의 특징을 그대로 상속. 비선형구조이므로 key의 중복을 허용하지 않고 순서가 없다. 인덱스도 없음. 만약 값을 추가하거나 삭제하려면 그 값이 내부에 있는지 검색한 후 추가, 삭제해야하므로 속도가 List 구조에 비해 느림.

  • 종류 : HashSet(정렬x), TreeSet(자동정렬)

메소드 종류

  1. HashSet 생성
HashSet<String> sample1 = new HashSet<>();
HashSet<String> sample2 = new HashSet<>(10); 
 // sample1의 모든 값을 가진 HashSet 생성
HashSet<String> sample3 = new HashSet<>(sample1);
//초기값 세팅
HashSet<String> sample4 = new HashSet<>(Arrays.asList("one", "two", "three")); 
  1. HashSet 요소 값 추가 - add()
HashSet<String> sample = new HashSet<>()
    sample.add("one");
    sample.add("two");
    sample.add("three");

HashSet은 순서가 없음 -> 특정 위치에 값을 추가 불가
입력되는 값이

  • HashSet 내부에 존재하지 않는다면 그 값을 HashSet에 추가하고 true 를 반환
  • HashSet 내부에 존재한다면 false를 반환
  1. HashSet 크기 구하기 - size()
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));
System.out.println(set.size()); //3
  1. HashSet 요소 값 삭제 - remove(value), clear()
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));
//값 1 제거
set.remove(1);
//모든 값을 제거
set.clear();

삭제하려는 값이

  • HashSet 내부에 존재한다면 그 값을 삭제하고 true를 반환한다.
  • HashSet 내부에 존재하지 않는 다면, false를 반환한다.
  1. HashSet 요소 값 검색 - contains(value)
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));
System.out.println(set.contains(1)); //true
  1. HashSet 요소 값 출력
    Set 컬렉션을 그냥 'print' 처리 할 경우 대괄호( '[ ]' )로 묶여 Set의 전체값이 출력된다.
    때문에, 전체 객체를 대상으로 한번씩 반복해서 가져오는 반복자 (Iterator)를 사용해 출력해야 한다.
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));
System.out.println(set); //[1,2,3]

Iterator iter = set.iterator();	
while(iter.hasNext()) {
    System.out.println(iter.next());
}

0개의 댓글