Java

[Java] 자바 ArrayList, List의 교집합, 부분집합, 차집합, 합집합 구하는 방법 총정리

자바 ArrayList의 교집합과 합집합 그리고 부분집합 및 차집합을 쉽게 구하는 방법을 알아봅니다. 날코딩으로 삽질 및 시간 낭비하지마세요. 자바 리스트 클래스에서 지원하는 메서드를 사용하세요. 언어 스킬UP 및 알고리즘 공부를 하시는 분들이라면 그렇게 동일한 기능을 하는 메서드를 구현하는 것을 추천드립니다.

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

[관련글 더 보기]

[오브젝트 캐스팅오류 처리]UncaughtException: java.lang.ClassCastException: com.app.test.database.NumberTogetherCountVo cannot be cast to java.lang.Comparable at java.util.Collections$ReverseComparator.compare(Collections.java:5165)

[Java] 자바 ArrayList 중복 값 제거하기 (HashSet, Stream, TreeSet)

[Java] 자바 ArrayList 중복 값 제거하기 (HashSet, Stream, TreeSet)

ArrayList의 중복 값을 제거하는 방법 1.ArrayList의 데이터를 contains() 메소드를 사용하여 중복 값을 제거 2.Stream의 distinct() 메소드를 사용하여 중복 값을 제거 3.HashSet, TreeSet을 사용하여 중복 값을..

playground.naragara.com

[Java] 자바 ArrayList, List 두 리스트 값 비교 방법 총 정리

[Java] 자바 ArrayList, List 두 리스트 값 비교 방법 총 정리

두 개의 리스트에 대한 값 비교 방법에 대해 알아보자. 1.containsAll()메소드를 사용하는 방법 2.Arrays.equals()메소드를 사용 3.ArrayList를 Collection으로 변환 후 removeAll()메소드를 사용하는 방법 4.cont..

playground.naragara.com

[Java] 자바 ArrayList, List 오름차순, 내림차순 정렬 예제코드

[Java] 자바 ArrayList, List 오름차순, 내림차순 정렬 예제코드

ArrayList 값 정렬을 해보려고 합니다. 자바에서 제공하는 라이브러리를 사용하면 쉽게 가능 합니다. Collections.sort(), Collections.reverseOrder() 메소드를 사용하거나 Comparator.naturalOrder(), Comparat..

playground.naragara.com

[Java] 자바 ArrayList 사용방법 및 예제

[Java] 자바 ArrayList 사용방법 및 예제

ArrayList는 자바에서 데이터 처리시 가장 많이 사용하는 클래스로 반드시 알고 있어야 개발할때 유용하다. ■ArrayList 선언 방법 package edu.sample; import java.util.ArrayList; public class arrayListExamp..

playground.naragara.com

Leave a Reply

error: Content is protected !!