일단 자바의 Set을 알아보기에 앞서서
List를 알아두면 참 좋은데
List에 대해서는 아래 글을 참고해주면 된다
자바 List 정의부터 출력까지
List는 자바의 자료형 중 하나로 배열과 비슷하지만 결정적으로 다른 점은 1. 크기를 자유롭게 설정 가능 - 배열은 처음 크기를 설정하고 나서부터는 크기 설정이 불가능하지만 리스트는 삽입과 삭제로 원하는대로..
wakestand.tistory.com
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에 대해 배울 때 set은 정렬 순서가 없으며 무작위로 호출되기 때문에 순서를 가지게 하고 싶으면 LinkedHashSet을 사용하라는 식으로 많이 배웠을텐데 실제 set에 값을 넣고 iterator로 값을 꺼내보..
wakestand.tistory.com
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 |
댓글