T_era
[JAVA] HashSet이란??? 본문
백준 문제풀이를 하는데 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 |