반응형
Set
- 집합 : 중복을 배제한다.
- 목적 : 값의 유무 검사
[특징]
1. 요소의 저장 순서를 유지하지 않는다.
2. 같은 요소의 중복 저장을 허용하지 않는다.
이러한 Set 컬렉션 클래스에 속하는 대표적인 클래스는 아래와 같다.
1. HashSet<E>
2. TreeSet<E>
이 둘중 HashSet<E>에 대해 알아보자
HashSet<E>
- 컬렉션에 HashSet 클래스는 set을 상속받아 순서가 없고 중복이 불가하다.
- 값(객체,데이터)을 중복해서 저장할 수 없다.
- 저장된 값들은 인덱스가 없기 때문에 저장 순서가 고정되어 있지 않다
- 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠르다.
* HashSet 사용법
여러 HashSet메소드를 사용하여 , 학생을 관리하는 예제를 살펴보자.
[import]
import java.util.HashSet;
[선언(HashSet 선언)]
학생의 이름을 받을 String 타입 HashSet 생성
HashSet<String>std = new HashSet<>();
[학생추가(HashSet 값 추가)]
std.add("김사과");
std.add("오렌지");
std.add("이메론");
std.add("이춘식");
[학생삭제(HashSet 값 삭제)]
std.remove("춘식이");
//std.clear(); 전체값 삭제
[인원 수 확인(HashSet 크기 구하기)]
System.out.println(std.size());
3
[학생 이름 검색(HashSet 값 검색)]
System.out.println(std.contains("김사과"));
System.out.println(std.contains("이춘식"));
true
false
[학생 이름 출력(HashSet 값 출력)]
System.out.println(std);
[이메론, 김사과, 오렌지]
Set컬렉션에 그냥 출력메소드를 사용하면 대괄호 [ ]로 묶여 set의 전체 값이 출력된다.
Set에는 인덱스로 객체를 가져오는 get 메소드가 없다.
그렇다면 어떻게 값을 각 각 가져올 수 있을까?
Set에서는 get 대신 전체 객체를 대상으로 한 번씩 반복해서 가져오는 반복자(Iterator)를 제공한다.
이것을 사용해보자 :)
[Iterator]
Iterator<String>iter = std.iterator(); // iterator() 메소드 사용
while(iter.hasNext()) { // 값이 끝날 때 까지 true
System.out.println(iter.next()); // 다음값을 계속 가져옴
}
이메론
김사과
오렌지
hasNext() | 해당 이터레이션(iteration)이 다음 요소를 가지고 있으면 true를 반환하고 더 이상 다음 요소를 가지고 있지 않으면 false를 반환함. |
next() | 이터레이션(iteration)의 다음 요소를 반환함. |
열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.
수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
35 Thread (0) | 2021.05.04 |
---|---|
34 Map 컬렉션 클래스(HashMap) (0) | 2021.04.29 |
32 접근 권한 제어자(접근자) (0) | 2021.04.22 |
31 ArrayList를 사용한 문제 풀이 (0) | 2021.04.22 |
댓글