Language/Java
합집합, 교집합, 차집합 ArrayList로 구현해보기
Hinos
2021. 4. 29. 11:14
반응형
알고리즘 문제를 풀다보면 집합 관련된 문제들을 꽤 자주 만나게 된다.
자주 사용하는 집합들을 따로 정리해놓으려고 한다.
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;
}
}
반응형