반응형
오늘은 자바(JAVA)에서 List 합집합, 교집합, 차집합 구하기 (with Value Object)에 대해
포스팅하려고 합니다.
일반적인 자료형들과 VO(Value Object)와 Map 등에서도 활용 가능하도록
Stream을 사용하여 List 합집합, 교집합, 차집합의 형태로 예제 소스를 구현하였습니다.
1. 합집합
public void UnionListTest() {
System.out.println("합집합 List 찾기");
ArrayList<String> listA = new ArrayList<String>();
listA.add("A");
listA.add("B");
listA.add("C");
listA.add("D");
ArrayList<String> listB = new ArrayList<String>();
listB.add("C");
listB.add("D");
listB.add("E");
listB.add("F");
List<String> unionList = new ArrayList<String>();
// (1) 간단한 데이터 합집합
// unionList = listA.addAll(listB);
// (2) 복잡합 데이터 합집합
// Value Object에서도 사용 가능
unionList = Stream.of(listA, listB).flatMap(x -> x.stream()).distinct().collect(Collectors.toList());
System.out.println("합집합 List : " + unionList);
}
[실행결과]
합집합 List 찾기
합집합 List : [A, B, C, D, E, F]
2. 교집합
public void IntersectionListTest() {
System.out.println("교집합 List 찾기");
ArrayList<String> listA = new ArrayList<String>();
listA.add("A");
listA.add("B");
listA.add("C");
listA.add("D");
ArrayList<String> listB = new ArrayList<String>();
listB.add("C");
listB.add("D");
listB.add("E");
listB.add("F");
ArrayList<String> intersectionList = new ArrayList<String>();
// (1) 간단한 데이터 교집합
// IntersectionList = listA.retainAll(listB);
// (2) 복잡합 데이터 교집합
// Value Object에서도 사용 가능
for (String data_a : listA) {
for (String data_b : listB) {
if(data_a.equals(data_b)) {
intersectionList.add(data_b);
break;
}
}
}
System.out.println("교집합 List : " + intersectionList);
}
[실행결과]
교집합 List 찾기
교집합 List : [C, D]
3. 차집합
public void DifferenceListATest() {
System.out.println("A의 차집합 List 찾기");
//A는 존재하지만, B에는 속하지 않는 집합
ArrayList<String> listA = new ArrayList<String>();
listA.add("A");
listA.add("B");
listA.add("C");
listA.add("D");
ArrayList<String> listB = new ArrayList<String>();
listB.add("C");
listB.add("D");
listB.add("E");
listB.add("F");
List<String> differenceListA = new ArrayList<String>();
// (1) 간단한 데이터 차집합
// differenceListA = listA.removeAll(listB);
// (2) 복잡합 데이터 차집합
// Value Object에서도 사용 가능
differenceListA = listA.stream().filter(a -> listB.stream().noneMatch(b -> {
return b.equals(a);
})).collect(Collectors.toList());
System.out.println("A의 차집합 List : " + differenceListA);
}
[실행결과]
A의 차집합 List 찾기
A의 차집합 List : [A, B]
지금까지 자바(JAVA)에서 List 합집합, 교집합, 차집합 구하기 (with Value Object)에 대한
포스팅이었습니다.
반응형
'Develope > JAVA' 카테고리의 다른 글
[LDAP] Unbalanced parenthesis; remaining name 에러 해결 방법 (0) | 2021.07.08 |
---|---|
[JAVA] 자바에서 JSON 만들기 및 JSON 데이터 출력 (0) | 2020.10.11 |
[JAVA] 이클립스(Eclipse) 프로젝트에 라이브러리(lib) 추가하는 방법 (0) | 2019.08.14 |
[JAVA] exe 파일 실행 (0) | 2019.06.10 |
[LDAP] PartialResultException 해결책 (2) | 2019.06.04 |