T_era

[JAVA] HashSet이란??? 본문

Programing/Java

[JAVA] HashSet이란???

블스뜸 2025. 3. 28. 19:52

백준 문제풀이를 하는데 HashSet이란 것을 알게 되어 조사해 봤다

Set interface
- Heap 영역에 존재한다
- 객체를 중복해서 저장할 수 없으며 하나의 null값만 저장한다.
- 중복을 자동으로 제거해 준다

Set은 비선형 구조이기 때문에 '순서'의 개념과 '인덱스'가 존재하지 않는다.
때문에 값을 추가 / 삭제 하는 경우 Set 내부에 해당 값을 검색하여 해당 기능을 수행

HashSet : Set Interface를 그대로 상속받는 구현 클래스
- 중복된 값을 허용하지 않는다
- List 등과 다르게 저장된 순서가 보장되지 않는다
- null을 값으로 허용해주어야 한다

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

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

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

// person의 모든 값을 가진 HashSet 생성 
HashSet<String> person4 = new HashSet<>(person);

//초기값 지정 가능
HashSet<String> person5 = new HashSet<>(Arrays.asList("Kim", "Lee", "Park"));

값 추가

HashSet<String> person = new HashSet<String>();
person.add("Kim");	// true
person.add("Kim");	// false

- 만약 추가한 값이 이미 존재하면 false 없으면 true 반환

// person의 크기
int personSize = person.size();

// 내용 삭제
person.remove("Kim");   // true
person.remove("Kim");   // false

// 전체 삭제
person.clear();

person.contains("Kim");     // 값이 존재하면 true 아니면 false

person.add("Kim");
person.add("Lee");
person.add("Park");
System.out.println(person); // 출력 결과 : [Lee, Kim, Park]

// 한개씩 출력할 땐 Iterator를 사용해야 한다
Iterator iter = person.iterator();
while (iter.hasNext()){     // 다음 값이 있으면 true
	System.out.println(iter.next());    // iter에서 값을 하나 가져온다
}

이와 같은 사용 방법이 있다

'Programing > Java' 카테고리의 다른 글

[JAVA] 퀵정렬 알고리즘 구현하기  (0) 2025.04.02
[JAVA] Comparator 구현하기  (0) 2025.03.29
[JAVA] 스코프와 형변환  (0) 2025.03.28
[JAVA] 반복문  (0) 2025.03.28
[JAVA] 조건문  (0) 2025.03.28