Set(Java)
Goal
- set구조의 특징에 대해 알아본다.
1. set의 특징
1-1 순서대로 저장되지 않음
- 출력 결과 : [김유신, 조자룡, 강감찬, 이순신]
- hash방식으로 저장되어 있기 때문에, 출력 순서는 입력 순서와 관계 없다.
- data의 순서 개념이 없기 때문에 get(index) 사용 불가.
package set.practice.fastcampus;
import java.util.HashSet;
public class HastSetTest {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("이순신");
set.add("김유신");
set.add("강감찬");
set.add("조자룡");
System.out.println(set);
}
}
1-2 중복을 허용하지 않는다.
- 출력결과 : [김유신, 강감찬, 이순신]
- HashSet은 중복을 허용하지 않기 때문에 "이순신"이 두번 add 됐을 경우, 출력시에 하나의 data만 출력되는 것을 볼 수 있음.
- ID, 학번, 주민등록번호 등 중복을 허용하지 않는 data를 관리하기 용이
package set.practice.fastcampus;
import java.util.HashSet;
public class HastSetTest {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("이순신");
set.add("김유신");
set.add("강감찬");
set.add("이순신");
System.out.println(set);
}
}
- 출력결과 : [이순신, 김유신, 강감찬, 이순신]
- ArrayList는 중복을 허용하고, add한 순서대로 data를 출력함.
package set.practice.fastcampus;
import java.util.ArrayList;
import java.util.HashSet;
public class HastSetTest {
public static void main(String[] args) {
ArrayList<String> set = new ArrayList<String>();
set.add("이순신");
set.add("김유신");
set.add("강감찬");
set.add("이순신");
System.out.println(set);
}
}
1-3 iterator를 이용하여 data를 받아온다.
- set은 순서대로 저장되지 않는데 어떻게 하나씩 출력할 수 있을까?
- iterator() : java의 collection(list, set 등)계열에서 불러올 수 있는 함수. data.length를 확인하여 값이 있으면 Iterator클래스 내부적으로 nextindex를 증가시켜 next 값을 하나씩 출력할 수 있게함.
->( iterator 자세히 알아보기 )
- 출력결과 : 김유신 강감찬 이순신
package set.practice.fastcampus;
import java.util.HashSet;
import java.util.Iterator;
public class HastSetTest {
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("이순신");
set.add("김유신");
set.add("강감찬");
Iterator<String> ir = set.iterator();
while(ir.hasNext()) {
String str = ir.next();
System.out.println(str);
}
}
}
FastCampus set-1 부터 다시 듣기
* 더 알아보기
- (?)set구조는 내부적으로 배열을 이용하는지, 이용하지 않는다면 어떻게 iterator를 통해 반복할 수 있는지.
-> 참고1. iterator implementation. https://gerardnico.com/lang/java/iterator
-> 참고2. set과 그 구조 간단하게 설명 https://dreamzelkova.tistory.com/entry/HNH-%EB%86%8D%EC%9E%A5-%EB%A7%8C%EB%93%A4%EA%B8%B0