Language/Java

Java 교집합, 부분집합, 차집합, 합집합 구하기

ABCD 2023. 3. 24.

1.리스트의 교집합

List클래스의 retainAll()메서드를 사용하여 두 개의 리스트에서 교집합을 구할 수 있습니다. 

package edu.sample;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayListDeup {
	public static void main(String[] args) { 
		List<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		
		List<String> arrayList2 = new ArrayList<String>();
		arrayList2.add("E");
		arrayList2.add("A");
		arrayList2.add("B");
		arrayList2.add("D");
		arrayList2.add("E");
		arrayList2.add("F");
 
		//교집합
    	arrayList.retainAll(arrayList2);
    	System.out.println("교집합 : "+ arrayList.toString() );
	}

}

[코드 실행결과]

교집합 : [A, B]

 

2.리스트의 부분집합

List클래스의 containsAll()메서드를 사용하여 부분집합을 구할 수 있습니다. 첫번째 arrayList2는 arrayList의 부분집합인가?에 대한 결과로 false 값을 얻었습니다. 두번째 arrayList3는 arrayList2의 부분집합인가?에 대한 결과를 true값을 리턴 받습니다.

package edu.sample;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayListDeup {

	public static void main(String[] args) { 
		List<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		
		List<String> arrayList2 = new ArrayList<String>();
		arrayList2.add("E");
		arrayList2.add("A");
		arrayList2.add("B");
		arrayList2.add("D");
		arrayList2.add("E");
		arrayList2.add("F");
 
    	List<String> arrayList3 = new ArrayList<String>(Arrays.asList("B", "D", "F"));
    	
    	//부분집합    	
    	boolean isVal = arrayList.containsAll(arrayList2);
    	boolean isVal2 = arrayList2.containsAll(arrayList3);
    	
		System.out.println("isVal: "+ isVal); 
		System.out.println("isVal2: "+ isVal2); 	

	}

}

[코드 실행결과]

isVal: false
isVal2: true

 

3.리스트의 차집합

List클래스의 removeAll()메서드를 사용하여 두 어레이리스트에서 차잡합을 구합니다. arrayList에서 arrayList2와 같은 리스트의 값을 모두 제거하며 C만 남게 됩니다.

package edu.sample;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayListDeup {

	public static void main(String[] args) { 
		List<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		
		List<String> arrayList2 = new ArrayList<String>();
		arrayList2.add("E");
		arrayList2.add("A");
		arrayList2.add("B");
		arrayList2.add("D");
		arrayList2.add("E");
		arrayList2.add("F");
      	
    	//차집합
    	arrayList.removeAll(arrayList2);
    	System.out.println("차집합 : "+ arrayList.toString() ); 

	}

}

[코드 실행결과]

차집합 : [C]

 

4.리스트의 합집합

List클래스의 addAll()메서드를 사용하여 arrayList 간 합집합을 구할 수 있습니다. addAll()메서드는 두 리스트의 중복값을 제거해 주지 않습니다. 중복을 제거하려면 HashSet를 사용하면 중복값을 허용하지 않음으로 제거됩니다.

package edu.sample;

import java.util.ArrayList;
import java.util.List;

public class ArrayListDeup {

	public static void main(String[] args) { 
		List<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		
		List<String> arrayList2 = new ArrayList<String>();
		arrayList2.add("E");
		arrayList2.add("A");
		arrayList2.add("B");
		arrayList2.add("D");
		arrayList2.add("E");
		arrayList2.add("F");
 
     	
    	//합집합
    	arrayList.addAll(arrayList2);
    	System.out.println("합집합 : "+ arrayList.toString() ); 

	}

}

[코드 실행결과]

합집합 : [C, A, B, E, A, B, D, E, F]

 

합집합의 중복요소 제거를 위해 HashSet를 사용

package edu.sample;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

public class ArrayListDeup {


	public static void main(String[] args) { 
		List<String> arrayList = new ArrayList<String>();
		arrayList.add("C");
		arrayList.add("A");
		arrayList.add("B");
		
		List<String> arrayList2 = new ArrayList<String>();
		arrayList2.add("E");
		arrayList2.add("A");
		arrayList2.add("B");
		arrayList2.add("D");
		arrayList2.add("E");
		arrayList2.add("F");
 
     	
    	//합집합
    	arrayList.addAll(arrayList2);
    	//System.out.println("합집합 : "+ arrayList.toString() ); 
    	
    	//arrayList 중복제거
    	HashSet<String> hash1 = new HashSet<String>();
    	hash1.addAll(arrayList);
    	
        //HashSet 출력
    	Iterator iterator = hash1.iterator();
    	while(iterator.hasNext()) {
    		System.out.println( iterator.next() ); 
    	}

	}

}

[코드 실행결과]

A
B
C
D
E
F
728x90
반응형

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

[Java] 개발자라면 알아야 할 Optional class?!  (0) 2023.04.11
[Java] Generic, WildCard (<T>, <?>)  (0) 2023.04.10
Map을 Value값으로 정렬하기  (0) 2023.03.19
Java Deque란??  (0) 2022.12.14
멀티캠퍼스 15일차 (완)  (0) 2022.10.31

댓글

💲 추천 글