foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리 [82. Set]

Set

이전 걸음에서 Java의 자료구조의 list를 공부를 했습니다. 자료구조에서 가장 많이 쓰는 구조이기 때문에 꼭 알고 있으면 좋습니다. 이번 걸음에서는 list 다음으로 다른 자료구조를 공부를 하도록 하겠습니다. 이번 걸음으로 다른 자료구조의 형태를 배우는 시간이 될 수 있습니다.

Set이라는 자료구조에 대해 이번 걸음에서 공부를 하도록 해보겠습니다. Set은 List와 다른 부분이 있기 때문에 차이점을 이해를 하고 사용을 하는 방법과 특징에 대해서 공부를 진행을 할 예정입니다. 끝까지 글을 읽으신다면 Set에 대해서 완벽하게 이해를 하실 수 있습니다.

Set이란? 무엇인지 그리고 Set의 특징과 Set과 관련이 있는 class들 그리고 Set의 Method를 공부해서 Set을 활용하고 사용을 할 수 있는 방법을 이번 걸음에서 같이 공부를 하겠습니다. List와 다른 부분을 숙지해서 필요성에 따라 사용을 할 수 있습니다.

Set이란?

SET메인사진

Set의 특징은 순서가 없이 데이터를 구조화 해서 관리를 하게 됩니다. 그래서 데이터의 index는 존재 하지 않고 데이터는 그 다음의 데이터 이동을 하는 것만 알고 있습니다. 그렇게 index 없이 데이터를 관리를 하다 보니 데이터가 중복이 될 수 없습니다. 데이터 자체를 가지고 고유성을 분리를 해서 관리를 하기 때문입니다.  Set에 관련 인터페이스는 Collection, Set이 있습니다. 

관련 class : HashSet, TreeSet, LinkedHashSet

※ Hash, Tree, Linked는 데이터를 구조하는 알고리즘입니다. 추가적으로 공부를 하시면 이해를 하시는데 더욱 도움이 되실 수 있습니다.

Set의 동작

Set은 자체적Method

add : 객체 추가

addAll : 컬렉션 추가

clear : 모든 객체 삭제

size : 객체의 개수

위와 같이 사용을 하여 추가와 모두 지우기가 가능합니다. 하지만 데이터만  탐색을 하거나 선택된 데이터를 삭제를 하기 위해서 Set만으로 할 수 없고 Iterator의 도움을 받아서 진행을 해야 합니다. 

메소드 이름

설명

Boolean hasNext()

다음 요소가 있으면 true, 없으면 false 반환

Object next()

다음 요소를 반환

Void remove()

다음 요소를 삭제

                                                                                   <Iterator Method>

위의 Method를 사용을 해야지 데이터 탐색과 개별 삭제를 할 수 있습니다.

Set 예제

    
public class SetTest1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HashSet<String> a = new HashSet<>();
		HashSett<Integer> b = new HashSet<>();
		
		String[] color =
		{"빨간색","주황색","노란색","초록색","파란색","남색","보라색"};
		
		for(int i = 0;i<color.length;i++) {
			a.add(color[i]);
			b.add(i);
		}
		a.add("빨간색");
		boolean checkChange = a.add("무지개색");
		System.out.println(checkChange);
		
		System.out.println("b의 가장 큰값은 ?" + Collections.max(b));
		System.out.println("b의 가장 최소값은 ?" + Collections.min(b));
		
		System.out.println("=============================");
		//향상된 for문
		for(String s : a) {
			System.out.println(s);
		}
		
		System.out.println("=============================");
		//일반
		Iterator it = a.iterator();
		
		while(it.hasNext()) {
			System.out.println(it.next());
		}	
		
	}

}

결과

true

b의 가장 큰값은 ?6

b의 가장 최소값은 ?0

=============================

노란색

주황색

남색

파란색

무지개색

초록색

빨간색

보라색

=============================

노란색

주황색

남색

파란색

무지개색

초록색

빨간색

보라색

 

위의 소스를 보면 iterator를 활용해서 반복문을 활용하여 데이터를 검색을 하고 있습니다. for문은 향상된 for문으로 데이터 탐색을 하고 while문에서 hasNext로 그 다음 데이터 여부를 확인하고 next를 통해서 데이터를 추출해서 사용을 하고 있습니다. 

※ 사용 방법을 꼭 확인해서 사용을 하세요.

SET 객체 적용 사진

객체를 데이터 관리를 하는 예제 소스입니다. 객체를 생성 후에 Set에 추가를 해서 사용을 하면 됩니다.

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나