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
728x90