728x90
반응형
집합 (Set)

 

집합(Set) 자료형은 집합과 관련된 것을 쉽게 처리하기 위해 만든 자료형이다.

Set 자료형에는 HashSet, TreeSet, LinkedHashSet 등의 Set 인터페이스를 구현한 자료형이 있다.

  • 중복을 허용하지 않는다.
  • 순서가 없다. (Unordered)

List 나 Array 같은 경우에는 ordered 이기 때문에 indexing 을 통해서 자료형의 값을 얻을 수 있다.

하지만 집합 자료형은 순서가 없기 때문에(unordered) 인덱싱으로 값을 얻을 수 가 없다.
이는 마치 Map 자료형과 비슷하다.(Key:Value)

중복을 허용하지 않는 집합 자료형의 특징은 자료형의 중복을 제거하기 위한 filter 역할로 종종 사용된다.

import java.util.Arrays;
import java.util.HashSet;	// Set

	public class TestClass{
		public static void main(String[] args) {
			
			HashSet<String> set = new HashSet<>(Arrays.asList("H", "e", "l", "l", "o"));
			System.out.println(set);	// [e, H, l, o]
		}	
	}

 


집합의 연산에 따른 구분

 

집합 자료형은 교집합, 합집합, 차집합으로 구분할 수 있다.

 

  • intersection.retainAll( );
  • union.addAll( );
  • substract.removeAll( );

 

import java.util.Arrays;
import java.util.HashSet;	// Set

	public class TestClass{
		public static void main(String[] args) {
			
			/* 두 개의 집합 자료형 생성 */
			HashSet<Integer> s1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6));
			HashSet<Integer> s2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8, 9));
			// Generics 로 int 형을 사용하고 싶을 경우 Wrapper 클래스인 Interger를 대신 사용해야됨.
			
			
			/* Intersection */
			HashSet<Integer> intersection = new HashSet<>(s1); // s1으로 interseciton 생성(기준)
			intersection.retainAll(s2);	// 교집합 수행
			System.out.println(intersection);		// [4, 5, 6] 출력
			
			
			/* Union */
			HashSet<Integer> union = new HashSet<>(s1);	//s1으로 union 생성
			union.addAll(s2);
			System.out.println(union);		// [1, 2, 3, 4, 5, 6, 7, 8, 9] 출력
			
			
			/* Substraction */
			HashSet<Integer> substract = new HashSet<>(s1);	//s1으로 substraction 생성
			substract.removeAll(s2);	// 차집합 수행
			System.out.println(substract);
			
		}	
	}

 


집합 자료형 관련 메서드

 

  • 값 추가하기 (add) :
    집합 자료형에 값을 추가할 때에는 add 메서드를 사용한다.

  • 값 여러개 추가하기 (addAll) :
    여러 개의 값을 한꺼번에 추가할 때는 다음과 같이 addAll 메서드를 사용한다.

  • 특정 값 제거하기 (remove) :
    특정 값을 제거하고 싶을 때는 다음과 같이 remove 메서드를 사용한다.
import java.util.Arrays;
import java.util.HashSet;	// Set

	public class TestClass{
		public static void main(String[] args) {
			
			HashSet<String> set = new HashSet<>();
			
			/* 값 추가 (add) */
			set.add("I");
			set.add("Love");
			set.add("You");
			System.out.println(set);	// [Love, I, You]
			
			/* 값 여러개 추가 (addAll) */
			set.addAll(Arrays.asList("So", "much"));
			System.out.println(set);	// [Love, I, So, You, much]
			
			/* 특정 값 제거 (remove) */
			set.remove("I");
			System.out.println(set);	// [Love, So, You, much]
			
		}	
	}

 


상수집합 (Enum)

 

Enum은 서로 관련이 있는 여러 개의 상수 집합을 정의할 때 사용하는 자료형이다.

 

	public class TestClass{
		enum CoffeeType{
			AMERICANO,
			ICE_AMERICANO,
			CAFE_LATTE
		};
		
		public static void main(String[] args) {
		
			System.out.println(CoffeeType.AMERICANO);		// AMERICANO
			System.out.println(CoffeeType.ICE_AMERICANO);	// ICE_AMERICANO
			System.out.println(CoffeeType.CAFE_LATTE);		// CAFE_LATTE
			
			/* Interation */
			for(CoffeeType type: CoffeeType.values()) {
				System.out.println(type);
			}
		}	
	}
728x90
반응형

'Language > Java' 카테고리의 다른 글

Java - Object Oriented Programming  (0) 2023.03.25
Java - 제어문(conditional, iteration)  (0) 2023.03.25
Java - Map  (0) 2023.03.25
Java - List  (0) 2023.03.25
Java - Array  (0) 2023.03.25

+ Recent posts