본문 바로가기
IT/Java

Java Stream 으로 두 List 비교

by 성준하이 2024. 1. 27.
반응형
Match 메소드 예제


allMatch() : 모든 요소들이 매개 값(Predicate)로 주어진 조건을 만족하는지 조사
anyMatch() : 최소한 한 개의 요소가 주어진 조건에 만족하는 지 조사
noneMatch()  : 모든 요소들이 주어진 조건을 만족하지 않는지 조사

class Test {
     public static void main(String[] args) {
          int[] intArray = {10, 20, 30};

         boolean allResult = Arrays.stream(intArray).allMatch(a -> a % 10 == 0);
          boolean anyResult = Arrays.stream(intArray).anyMatch(a -> a % 10 == 0);
         boolean noneResult = Arrays.stream(intArray).noneMatch(a -> a % 10 == 0);

          System.out.println(allResult); // true
          System.out.println(anyResult); // true
         System.out.println(noneResult); // false
     }
}

 

  • 응용1. 두 개의 List 중복된 값 찾기
class Test {

     public static void main(String[] args) {
         List oldList = Arrays.asList("1", "2", "3", "4");
         List newList = Arrays.asList("3", "4", "5", "6");

         List matchList = oldList.stream().filter(o -> newList.stream()
             .anyMatch(Predicate.isEqual(o))).collect(Collectors.toList());

         System.out.println(matchList.toString()); // [3,4]
     }

}

 

  • 응용2. 두 개의 List 중복되지 않은 값 찾기
//List A 기준 중복되지 않은 값 찾기
//List B 기준 중복되지 않은 값 찾기

class Test {

     public static void main(String[] args) {
         List oldList = Arrays.asList("1", "2", "3", "4");
         List newList = Arrays.asList("3", "4", "5", "6");

         List oldNoneMatchList = oldList.stream().filter(o -> newList.stream()
             .noneMatch(Predicate.isEqual(o))).collect(Collectors.toList());

         List newNoneMatchList = newList.stream().filter(n -> oldList.stream()
             .noneMatch(Predicate.isEqual(n))).collect(Collectors.toList());

         System.out.println(oldNoneMatchList.toString()); // [1,2]
         System.out.println(newNoneMatchList.toString()); // [5,6]
     }

}

 

반응형

댓글