java

최종연산 2

improve 2024. 2. 16. 10:29

● allmatch, anymatch, nonmatch

package org.example;

import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        boolean result = IntStream.of(1, 2, 3, 4, 5)
                .allMatch(value -> value % 2 == 0);
        System.out.println(result);

        System.out.println();

        result = IntStream.of(1, 2, 3, 4, 5)
                .anyMatch(value -> value % 2 == 0);
        System.out.println(result);

        System.out.println();

        result = IntStream.of(1, 2, 3, 4, 5)
                .noneMatch(value -> value % 2 == 0);
        System.out.println(result);
    }
}

 

●collect

package org.example;

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

public class Main2 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("box","toy","robot","simple");


        List<String> list2 = new ArrayList<>();
        for (String temp : list){
            if(temp.length()>3) {
                list2.add(temp);
            }
        }
        System.out.println(list2);



        List streamlist = list.stream()
                .filter(s -> s.length()>3)
                .collect(
                        () -> new ArrayList<>(),
                        (objects, s) -> objects.add(s),
                        (lst1,lst2) -> lst1.addAll(list2)
                );

        System.out.println(streamlist);


        List streamlist2 = list.stream()
                .filter(s -> s.length()>3)
                .collect(
                        Collectors.toList()
                );

        System.out.println(streamlist2);
    }
}

 

 

for 구문을 이용해서 똑같이 만들어 봤습니다.

 

첫번째 collect 는 변수명이 너무 많아서 더 간편하게 만들었습니다.

 

두번째 collect 에서  collects.tolist를 이용해서 new ArraysList의 역할을 대신할 수 있다.