반응형
알고리즘 문제를 풀다보면 집합 관련된 문제들을 꽤 자주 만나게 된다.
자주 사용하는 집합들을 따로 정리해놓으려고 한다.
package set;
import java.util.*;
public class SetExample
{
public static void main(String [] args)
{
ArrayList<String> arr1 = new ArrayList<>();
ArrayList<String> arr2 = new ArrayList<>(5);
for (int i = 0; i<10; i++)
{
arr1.add(String.valueOf(i));
if (i >= 5)
{
arr2.add(String.valueOf(i+2));
}
}
System.out.println("arr1 : " + arr1);
System.out.println("arr2 : " + arr2);
System.out.println("-------합집합-------");
System.out.println(union(arr1, arr2));
System.out.println("-------합집합-------");
System.out.println();
System.out.println("-------교집합-------");
System.out.println(intersection(arr1, arr2));
System.out.println("-------교집합-------");
System.out.println();
System.out.println("-------차집합-------");
System.out.println(difference(arr1, arr2));
System.out.println("-------차집합-------");
}
private static <T> ArrayList<T> union(ArrayList<T> list1, ArrayList<T> list2) // 합집합
{
Set<T> set = new HashSet<T>(15);
set.addAll(list1);
set.addAll(list2);
return new ArrayList<T>(set);
}
private static <T> ArrayList<T> intersection(ArrayList<T> list1, ArrayList<T> list2) // 교집합
{
ArrayList<T> result = new ArrayList<>(15);
result.addAll(list1);
result.retainAll(list2);
return result;
}
private static <T> ArrayList<T> difference(ArrayList<T> list1, ArrayList<T> list2) // 차집합
{
ArrayList<T> result = new ArrayList<>(15);
result.addAll(list1);
result.removeAll(list2);
return result;
}
}
반응형
'Language > Java' 카테고리의 다른 글
시간 간격을 정확하게 측정하는 방법. (0) | 2024.01.18 |
---|---|
Java로 자료구조(LinkedList, Stack, Queue) 구현해보기 (0) | 2021.04.26 |
자바 == 연산자 (0) | 2021.04.12 |
제네릭(Generic) (0) | 2021.04.02 |
Interface Comparable (0) | 2020.11.29 |