2016年1月25日 星期一

分別用Lambda 和傳統for loop 找出List 中不包含另一個List 的元素

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


/**
 * 程式資訊摘要:分別用Lambda及傳統for loop 寫出 data 中不包含 comparedData 的元素 
 * 類別名稱  :TestLambda.java 
 */
public class TestLambda {

    public static void main(String[] args) {
        List<String> data = Arrays.asList("apple", "ball", "cat");
        List<String> comparedData = Arrays.asList("ball", "cat");

        // lambda
        data = data.stream().filter(
                d -> !comparedData.stream().filter(
                        c -> d.contains(c)).findAny().isPresent())
                .collect(Collectors.toList());

        // for loop
        List<String> results = new ArrayList();
        for (String d : data) {
            boolean found = false;
            for (String c : comparedData) {
                if (d.contains(c)) {
                    found = true;
                    break;
                }
            }

            if (!found) {
                results.add(d);
            }
        }

        data.forEach(d -> System.out.println(d));

        results.forEach(d -> System.out.println(d));
    }
}

沒有留言:

張貼留言