Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dbms
- 그리디
- 벡엔드
- DP
- 순열 알고리즘
- 크루스칼 알고리즘
- jsp
- mysql
- 부스트코스
- programmers
- greedy
- 프로그래머스
- 웹서버
- BJ
- 웹프로그래밍
- 프림 알고리즘
- 정렬 알고리즘
- Prim's Algorithm
- SERVLET
- 백준
- 브라우저
- 해시
- 정렬
- 소수
- mst
- 네이버 부스트캠프 ai tech
- 웹 프로그래밍
- request
- Kruskal's Algorithm
- 다이나믹 프로그래밍
Archives
- Today
- Total
끵뀐꿩긘의 여러가지
Java - HashSet 클래스 본문
Set이란?
우리에게 익숙한 List처럼 데이터를 저장하는 자료형 중 하나이다.
set의 특징:
- 요소의 저장 순서를 유지하지 않는다
- 같은 요소의 중복 저장을 허용하지 않는다
set을 구현한 클래스:
HashSet: 데이터를 해쉬 테이블에 담는 클래스, 순서가 정해지지 않는다.
TreeSet: red-black이라는 트리에 데이터가 담아지며, 값에 따라서 순서가 정해진다. HashSet보다 성능상 느리다.
LinkedHashSet: 해쉬 테이블에 데이터를 담는데, 저장된 순서에 따라서 순서가 결정된다.
※Hash 테이블과 red-black트리는 나중에 포스팅하면, 링크를 첨부하겠습니다.
<Hashset의 특징 및 메서드>
HashSet 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠르다.
HashSet 클래스는 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장한다.
HashSet 클래스는 중복요소를 알아서 제거해준다.
선언:
import java.util.HashSet;
HashSet<Integer> set = new HashSet<>();
메서드:
생성자 or 메서드 | 사용법 |
HashSet() | HashSet 객체를 생성 |
HashSet(Collection c) | 주어진 컬렉션을 포함하는 HashSet 객체 생성 |
HashSet(int initialCapacity) | 주어진 값을 초기용량으로 하는 HashSet 객체를 생성 |
HashSet(int initialCapacity, float loadFactor) | 초기용량( initialCapacity )과 load factor( loadFactor )를 지정하는 생성자 load factor는 컬렉션 클래스에 저장공간이 가득 차기전에 미리 용량을 확보하기 위한 것으로 이 값을 0.8로 지정하면, 저장공간의 80%가 채워졌을때 저장공간이 두배로 늘어난다. default는 0.75 |
boolean add(Object o) | 새로운 객체를 저장 |
boolean addAll(Collection c) | 주어진 컬렉션에 저장된 모든 객체들을 추가 |
void clear() | 저장된 모든 객체를 삭제 |
Object clone() | HashSet 을 복제해서 반환(얕은 복사) |
boolean contains(Object o) | 지정된 객체를 포함하고 있는지 알려줌 |
boolean conainsAll(Collection c) | 주어진 컬렉션에 저장된 모든 객체들을 포함하고 있는지 알려줌 |
boolean isEmpty() | HashSet 이 비어있는지 알려줌 |
Iterator iterator() | Iterator 를 반환 |
boolean remove(Object o) | 지정된 객체를 HashSet 에서 삭제 성공하면 true, 실패하면 false |
boolean removeAll(Collecton c) | 주어진 컬렉션에 저장된 모든 객체와 동일한 것들을 Hashset 에서 모두 삭제 |
boolean retainAll(Collection c) | 주어진 컬렉션에 저장된 객체와 동일한 것만 남기고 삭제 |
int size() | 저장된 객체의 개수를 반환 |
Object[] toArray() | 저장된 객체들을 객체배열의 형태로 반환 |
Object[] toArray(Object[] a) | 저장된 객체들을 주어진 객체배열( a )에 담는다. |
-Iterator를 통한 HashSet 사용 & HashSet의 중복 제거
import java.util.*;
public class Main {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<>();
set.add(1); //1추가
set.add(1); //1추가(중복)
set.add(1); //1추가(중복)
set.add(2); //2추가
set.add(3); //3추가
Iterator<Integer> iter = set.iterator(); // Iterator 사용
while(iter.hasNext()) {//값이 있으면 true 없으면 false
System.out.println(iter.next()); //다음 값 return
}
}
}
출력결과:
1
2
3
HashSet에 중복된 데이터를 넣으면 1개로만 처리된다.
HashSet의 값은 Iterator를 통해 꺼낼 수 있다.
'JAVA > 자료구조-알고리즘&함수 정리' 카테고리의 다른 글
Java - 해시(hash)(2/2) (0) | 2021.05.01 |
---|---|
Java - 해시(hash)(1/2) (0) | 2021.05.01 |
Java - 순열 조합 알고리즘 (0) | 2021.04.29 |
Java - 소수 찾기 (0) | 2021.04.28 |
Java - StringBuilder/StringBuffer 클래스, 메서드 (0) | 2021.04.26 |
Comments