범계쟁이
344
2019-06-26 10:19:27
3
325

JAVA 리스트 소거법 질문입니다!


A 배열 = {가,나,다}

B 배열 = {가,나}

A 배열에서 '다'만 매칭이 실패 !


A 배열 = {가,나,다}

B 배열 = {가,나,다}

모두 매칭 !


A 배열 = {가,나,다}

B 배열 = {가,나,다,라}

B 배열에서 '라'만 매칭이 실패 !


이런식으로 양쪽 리스트에서 소거해서

1. A 또는 B 어느 배열에서

2. 어떤 값이 남는지 알 수있는

JAVA 메소드 또는 손 쉽게 사용가능한 library 추천좀 부탁드립니다 !

0
  • 답변 3

  • LichKing
    16k
    2019-06-26 10:36:43
    @Test
    public void t() {
    List<String> list1 = Arrays.asList("A", "B", "C");
    List<String> list2 = Arrays.asList("A", "B", "D", "E");

    Set<String> union = new HashSet<>(list1);
    Set<String> intersection = new HashSet<>(list1);
    Set<String> set = new HashSet<>(list2);

    union.addAll(set);
    intersection.retainAll(set);

    union.removeAll(intersection);

    System.out.println(union);
    }

    이런거요?

    메서드가 Collection에 있는애들이라 꼭 set으로 할필요는 없을거에요

  • Frudy
    7k
    2019-06-26 10:38:10

    library가 있는진 모르겠지만, 구현은 쉬울거같아요.


    1. A 배열 = {가,나,다}

    2. 이런식으로 양쪽 리스트에서 소거해서


    단어가 서로 달라서 뭘 원하시는진 모르지만

    요구사항 구현은 Array보다는 List가 낫겠네요.


    프로토타입은 임의로 지정했습니다.


    package test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class EliminationTest 
    {
    	public static void main(String[] args) 
    	{
    		List<String> list1 = new ArrayList<>();
    		List<String> list2 = new ArrayList<>();
    		
    		list1.add("가");
    		list1.add("나");
    		list1.add("다");
    		list1.add("마");
    		
    		list2.add("가");
    		list2.add("나");
    		list2.add("다");
    		list2.add("라");
    		
    		System.out.println(elimination(list1, list2));
    	}
    	
    	public static <T> List<T> elimination(List<T> list1, List<T> list2)
    	{
    		List<T> resultList = new ArrayList<T>();
    		List<T> temp1 = new ArrayList<>(list1);
    		List<T> temp2 = new ArrayList<>(list2);
    		
    		temp1.removeAll(list2);
    		temp2.removeAll(list1);
    		
    		resultList.addAll(temp1);
    		resultList.addAll(temp2);
    		return resultList;
    	}
    }
    


    결과 : [마, 라]

  • Frudy
    7k
    2019-06-26 10:40:35

    LichKing

    오...처음보는 메소드도 있고 저도 소스좀 보고 살펴보겠습니다. 감사합니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.