Lambda和Streams

时间:2017-02-10 10:26:28

标签: java lambda

如果我有一个带整数的列表,只想要一种方法从该列表中打印某些数字。我怎样才能做到这一点?到目前为止我的尝试:

List<Integer> list = Arrays.asList(42, 3, 18, 16, 1, 1, 3, 9, 7, 6, 10,);
System.out.print("odd: ");
    Predicate<Integer> MyIntegers =  (n -> n % 2 != 0) ;     
    printSelected(MyIntegers, odd);

public static void printSelected(List<Integer> list, Predicate<Integer> predicate) {
     list.forEach(n  -> System.out.print(" " + n));

打印出所有整数。

2 个答案:

答案 0 :(得分:0)

您没有使用谓词。您需要filter(predicate)

你最想做的是

String odd = list.stream().filter(i -> i % 2 != 0).collect(Collectors.join(" "));

答案 1 :(得分:0)

试试这个

List<String> result = list.stream()
    .filter(//your lambda function that returns a bool based on some condition)
    .collect(Collectors.toList());