일단 자바의 Set을 알아보기에 앞서서
List를 알아두면 참 좋은데
List에 대해서는 아래 글을 참고해주면 된다
Set을 List와 비교해보자면
1. Set은 중복 값을 삽입할 수 없다
2. Set은 특정한 순서를 가지고 있지 않다
이제 예제를 통해 한번 알아보자
String 타입만 받는 HashSet을 선언한 뒤
set 안에 add 메소드를 사용해서 "a", "b", "b", "d"
총 4개의 값을 set 안에 넣었는데
set은 중복값을 허용하지 않기 때문에
b를 1번 넣건 200번 넣건
동일한 값은 하나만 들어가게 된다
또한 삽입 시 순서가 없기 때문에
배열(Array)이나 List 처럼
.get(인덱스)로 값을 가져올 수 없고
Iterator를 통해 가져와야 하는데
set.iterator()로 set 값을 iterator에 담은 후
.next를 통해 하나씩 뽑아내는 식이다
여기서 순서가 없다고 했는데
100% 보장하지 않을 뿐
대부분의 경우에는 넣은 값의
hashCode값에 따라 순서가 정해져 나오게 된다
Set 선언방법과 주요 메소드는 다음과 같다
Set 선언하기 (LinkedHashSet, TreeSet으로도 가능)
HashSet<데이터타입> set명 = new HashSet<데이터타입>();
Set에 값 추가하기
set명.add("값");
Set 크기 확인하기
set명.size();
Set 내용 출력할 수 있게 Iterator 안에 담기
Iterator<데이터타입> iterator명 = set명.Iterator();
Iterator 안에 담은 set 출력하기
Iterator명.next();
or
while(iterator명.hasNext()) {
iterator명.next(); // 값 없을때까지 계속 출력
}
주로 사용되는 Set은 HashSet 말고도
LinkedHashSet, TreeSet이 있는데 특징은 다음과 같다
LinkedSet
- 다른 Set들과 동일하게 중복은 허용하지 않으나
.add() 한 순서대로 값이 저장된다
TreeSet
- 오름차순으로 값을 정렬해 가지고 있으며
다른 set보다 대량의 데이터를 검색할 시 훨씬 빠르다
마지막으로 예제에 사용한 코드는 아래와 같다
import java.util.HashSet;
import java.util.Iterator;
public class SetTest {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>(); // set 선언
set.add("a");
set.add("b");
set.add("b"); // set에 중복값 저장 불가
set.add("c"); // set에 값 담기
System.out.println("set 크기 확인 : " + set.size());
Iterator<String> iter = set.iterator(); // set을 Iterator 안에 담기
while(iter.hasNext()) { // iterator에 다음 값이 있다면
System.out.println("iterator : " + iter.next()); // iter에서 값 꺼내기
}
}
}
'Language > Java' 카테고리의 다른 글
자바 디버그 설정 및 실행방법 (0) | 2019.12.04 |
---|---|
자바 Map 사용법부터 출력까지 (1) | 2019.12.03 |
자바 set 정렬 기준 및 예제 (0) | 2019.11.26 |
자바 void return 메소드 뜻부터 호출까지 (0) | 2019.11.26 |
자바 List 정렬, 역정렬 방법 및 예제 (0) | 2019.11.25 |
댓글