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 |