티스토리 뷰

Study/DataStructure

Set(Java)

GrapeMilk 2020. 2. 18. 12:42

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 

'Study > DataStructure' 카테고리의 다른 글

해시, 해시함수, 해시테이블 (Hash, Hash Table)  (0) 2020.03.12
생활코딩 DataStructure -6  (0) 2020.02.24
Queue(Java)  (0) 2020.02.18
Stack(Java)  (0) 2020.02.18
생활코딩 DataStructure -5  (0) 2020.02.17
댓글