[자료구조]HashSet이 뭔교

군자·2024년 3월 21일

코딩테스트

목록 보기
2/10


주문하신 HashSet 나왓읍니다~

출처

https://velog.io/@acacia__u/hashSet
https://st-lab.tistory.com/238


📌 Set이란?

Hashset을 공부하기 위해서는 HashSet의 상위개념인 Set에 대해 이해할 필요가 있다

  • 집합
  • 중복되는 요소(원소)를 허용하지 않음
  • 저장순서를 유지하지 않음(LinkedHashSet은 제외)

    출처: https://st-lab.tistory.com/238

🔍 HashSet

  • hash에 의해 데이터 위치를 특정하고, set을 이용해 중복을 제거함
  • 삽입, 삭제, 색인이 굉장히 빠른 컬렉션 중 하나
  • 입력순서를 보장하지 않고 저장한 뒤 순서조차 보장하지 않음.
  • 중복확인에 많이 사용됨

🔍 LinkedHashSet

  • link와 hash, set이 합쳐진 형태
  • set의 경우에는 입력 순서대로의 저장순서를 보장받지 않기 때문에 '중복은 허용하지 않으면서 순서를 보장받고 싶은 경우'에 LinkedHashSet을 사용한다.
  • LTU(Least Recently Used) algorithm에 사용

🔍 TreeSet

  • HashSet과 마찬가지로 입력 순서대로의 저장 순서를 보장하지 않으며 중복 데이터 또한 넣지 못함.
  • 가중치에 따른 순서에 따라 정렬되어 저장된다는 특징이 있음.

📌 HashSet의 구현

🔍 HashSet 생성

// 타입을 지정 가능
HashSet<String> animals1 = new HashSet<String>();

// 타입을 생략하여 사용 가능 -> 빈 HashSet생성 시 사용
HashSet<String> animals2 = new HashSet<>();  

// 초기 용량(Capacity) 설정
HashSet<String> animals3 = new HashSet<>(10); 

 // animal의 모든 값을 가진 HashSet 생성 
HashSet<String> animals4 = new HashSet<>(animals1);

//초기값 지정 가능
HashSet<String> animals5 = new HashSet<>(Arrays.asList("tiger", "lion", "fox")); 

🔍 HashSet 요소 값 추가

HashSet<String> animals = new HashSet<>()
animals.add("tiger");
animals.add("lion");
animals.add("fox");
  • 입력되는 값이 HashSet 내부에 존재하면 false
  • 존재하지 않으면 true 반환

🔍 HashSet 요소 값 삭제

HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));

// 첫번째 값 제거
set.remove(2);

// 모든 값을 제거
set.clear();
  • 삭제되는 값이 HashSet 내부에 존재하면 true
  • 존재하지 않으면 false 반환

🔍 HashSet 크기 구하기

HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));

set.size();
  • 삭제되는 값이 HashSet 내부에 존재하면 true
  • 존재하지 않으면 false 반환

🔍 HashSet 요소 값 검색

HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));

set.contains(1);
  • 지정된 값이 HashSet 내부에 존재하면 true
  • 존재하지 않으면 false 반환

🔍 HashSet 요소 값 출력

HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));

//출력결과 :  [1,2,3]
System.out.println(set); 
		

Iterator iter = set.iterator();	

//hasNext() : 가져올 객체가 있다면 true 리턴, 없다면 false 리턴
// next() : Iterator에서 하나의 객체를 가져올 수 있는 메소드
while(iter.hasNext()) {
    System.out.println(iter.next());
}
  • set을 그냥 바로 출력하게 되면 괄호가 포함되어 출력됨
profile
헬로 아이엠군자. 굿투씨유

0개의 댓글