我可以将筛选列表作为参数来过滤java 8中的谓词吗?

时间:2014-06-02 09:35:21

标签: filter java-8

我正在尝试以Java 8风格TDD叔叔Bob的素数因素。 我让代码工作了,我想通过仅查看以前的素数而不是所有数字来添加一个改进来检查数字是否为素数。

public class PrimeFactorsGenerator {

    public static List<Integer> generate(int number) {
        return createListOfNumberUntil(number).stream().
            filter(x -> isDivided(number, x)).
            filter(x -> isPrime(x)).
            collect(Collectors.toList());
    }

    private static boolean isPrime(Integer t) {
        for (int i = 2; i < t; i++) {
            if(isDivided(t, i)){
                return false;
            }
        }
        return true;
    }

    private static List<Integer> createListOfNumberUntil(int number) {
        List<Integer> $ = Lists.newArrayList();
        for (int i = 2; i <= number; i++) {
            $.add(i);
        }
        return $;
    }

    private static boolean isDivided(int num, int i) {
        return num % i == 0;
    }
}

是否可以将过滤后的列表作为isPrime方法的参数?

0 个答案:

没有答案