개발일지

Set / HashSet 본문

Algorithm

Set / HashSet

O'mil 2024. 4. 24. 17:17
728x90

Set이란?

  • 중복해서 저장할 수 없으며, 하나의 null값만 저장 가능
  • 중복 자동 제거
  • 비선형 구조로 '순서'와 '인덱스'가 존재하지 않는다.
    → 삭제하는 경우 Set내부에서 해당 값을 검색하여 기능을 수행해야 한다.
    → 처리 속도 느림

 

HashSet이란?

: Set의 성질을 가지고 있음

  • 중복된 값을 허용하지 않음
  • 순서가 보장되지 않음
  • null을 값으로 허용함

 

HashSet 구현

1. HashSet 생성

// 타입 지정하여 생성
HashSet<String> food = new HashSet<String>();

// 타입 생략 → 빈 HashSet생성 시 사용
HashSet<String> food2 = new HashSet<>();  

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

 // food의 모든 값을 가진 HashSet 생성 
HashSet<String> food4 = new HashSet<>(food1);

//초기값 지정 가능
HashSet<String> food5 = new HashSet<>(Arrays.asList("apple", "banana", "grape"));

 

 

2. HashSet 값 추가

  • add()를 이용해 값 추가 가능
  • 입력된 값이 내부에 존재한다면 false 리턴
  • 입력된 값이 내부에 존재하지 않는다면 추가 후, true 리턴
HashSet<String> food = new HashSet<>()
    food.add("apple");
    food.add("banana");
    food.add("grape");

 

 

3. HashSet 크기 구하기

  • size()를 이용해 크기 구하기 가능
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));

System.out.println(set.size());
//return: 3

 

 

4. HashSet 값 삭제

  • remove(), clear 이용해 값 삭제 가능
  • 입력된 값이 내부에 존재한다면 값을 삭제 후, true 리턴
  • 입력된 값이 내부에 존재하지 않는다면 false 리턴
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));

set.remove(2);
// 2 제거 후, true 리턴

set.clear();
//모든 값 제거 후, true 리턴

 

 

5. HashSet 값 검색

  • contains()를 사용해 존재 여부 확인 가능
  • 값이 있으면 true 리턴
  • 값이 없으면 false 리턴
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));

System.out.println(set.contains(1));
// true 리턴

 

 

6. HashSet 값 출력

  • 'System.out.println' 사용시 '[]' 형태로 출력
  • 값만 출력하고 싶다면, Interator를 사용해야 함
    • hashNext(): 가져올 객체가 있으면 true, 없으면 false 리턴
    • next(): Iterator에서 하나의 객체를 가져올 수 있는 메소드
HashSet<Integer> set = new HashSet<Integer>(Arrays.asList(1,2,3));

//1번
System.out.println(set);
// [1, 2, 3] 리턴
		

//2번
Iterator iter = set.iterator();	

while(iter.hasNext()) {
    System.out.println(iter.next());
}
//1
//2
//3 리턴

 

 


📚 Reference

[Java] HashSet의 개념과 사용법 정리

 

728x90
Comments