꾸물꾸물 졔의 개발공부
[JAVA] HashSet 개념 및 사용법 본문
HashSet 이란 ?
자바에서 HashSet 은 Set 인터페이스를 구현한 클래스이다.
HashSet의 주요특징은 다음과 같다.
- 중복값 허용 되지 않음
- 입력순서가 일정하게 보장되지 않음. 즉, 정렬이 되지 않음
- '순서'가 존재하지 않기 때문에 특정 값을 가져오는 index를 사용할 수 없다.
- null 값도 하나의 값으로 허용
값의 추가나 삭제가 많은 알고리즘을 구현할 때에는 HashSet 이 적합하지 않을 수도 있다.
index 개념이 없고 중복값을 허용하지 않기 때문에, 특정 값을 추가할 때 HashSet내에서 해당값의 존재여부를 확인하고 추가해야하고, 삭제를 위해서도 모든 값을 탐색해야한다.
HashSet 의 중복제거
객체의 hashCode() 메서드로 중복을 걸러낸다.
- 객체를 저장하기 전에 해당 객체의 hashCode()를 호출하여 해시코드를 얻어낸다.
- 저장되어 있는 객체들의 해시코드 중 같은 것이 있는지 확인한다.
- 같은 해시코드의 값이 있다면, equals() 메서드로 두 객체의 동일성을 확인한다.
- equals() 결과가 true 라면, 같은 값으로 판단하여 중복 저장을 하지 않는다.
- 그렇지 않다면 저장한다.
HashSet 사용법
1. HashSet 선언
HashSet<Integer> hashSet= new HashSet<>();
HashSet <데이터타입> 변수명 = new HashMap<데이터타입>();
- 데이터타입 ex) Integer, String, Character 등
HashSet<Integer> hashSet= new HashSet<>(20);
다음과 같이 괄호내에 초기 용량을 정해줄 수 있다. ( default 값은 16 )
만약, 용량을 초과하더라도 hashSet이 자연스럽게 용량을 늘려준다.
2. 값 추가
hashSet.add(10);
add() 메서드를 사용. 처음 선언할 때의 데이터타입과 맞는 데이터를 추가한다.
3. 값 삭제
- 특정 값만 삭제
hashSet.remove(10);
remove() 메서드를 사용해서 삭제하고자 하는 값을 명시해준다.
- 모든 값 삭제
hashSet.clear();
clear() 메서드를 사용하면, hashSet 내의 모든 값이 삭제된다.
4. hashSet의 크기
hashSet.size()
size() 메서드를 사용하면, hashSet 의 크기를 int 형으로 반환해준다.
5. 값 포함여부 확인
hashSet.contains(value);
contains() 메서드를 사용하면 특정값이 hashSet 내에 존재하는지/존재하지 않는지를 확인할 수 있다.
true-false 값으로 반환해준다.
6. 데이터 출력하기
Iterator iterator = hashSet.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
Iterator 를 사용해서 값을 출력할 수 있다.
while문의 hasNext() 로 다음 값이 존재한다면, next() 값을 출력해주면 된다.
'JAVA' 카테고리의 다른 글
sc. next() (0) | 2022.01.23 |
---|---|
입력값으로 input 파일 사용하기 / split () (0) | 2022.01.22 |
Scanner 로 txt 파일 경로 불러오기 (0) | 2022.01.22 |
Arrays.copyOf , Arrays.copyOfRange - 배열복사 (0) | 2022.01.21 |
정렬하기 - JAVA (Collections.sort) (0) | 2021.07.20 |