gpt4 book ai didi

Java 8 : Lambda expression contains more than one statement/logic

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:16 24 4
gpt4 key购买 nike

我编写了一个简单的程序来使用 java 8 lambda 遍历 List

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

public class FirstLamdaExpression {

public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//Way 1 : old way
list.forEach(new Consumer<Integer>() {

@Override
public void accept(Integer t) {
System.out.print(t + " ");

}
});

//Way 2
System.out.println(" ");
list.forEach((Integer t) -> System.out.print(t + " "));

//Way 3
System.out.println(" ");
list.forEach((t) -> System.out.print(t + " "));

//Way 4
System.out.println(" ");
list.forEach(System.out::print);

}

}

在下面的程序中,我有 2 个以上的逻辑要在 lambda 中执行。我面临的问题是如何更新第 4 种方式,即 System.out::print?

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

public class SecondLamdaExpression {

public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//Way 1 : Old way
list.forEach(new Consumer<Integer>() {

@Override
public void accept(Integer t) {
System.out.print(t + " Twice is : ");
System.out.print(t*2 + " , ");

}
});

//Way 2
System.out.println(" ");
list.forEach((Integer t) ->
{System.out.print(t + " Twice is : ");
System.out.print(t*2 + " , ");
});

//Way 3
System.out.println(" ");
list.forEach((t) -> {System.out.print(t + " Twice is : ");
System.out.print(t*2 + " , ");
});

//Way 4
//System.out.println(" ");
//list.forEach((t)-> System.out::print{(t + " Twice is : ");});

}

}

最佳答案

您似乎在问如何将 t + "Twice is : "+ t*2 + ", " 传递给方法引用。您不能将显式参数传递给方法引用,也不能将方法引用与 lambda 表达式结合使用。

您可以使用 Stream 管道首先 map t 您希望为 t 的每个值打印任何内容>,然后使用带有方法引用的 forEach 来打印它:

list.stream().map(t -> t + "  Twice is : " + t*2 + "  , ").forEach(System.out::print);

关于Java 8 : Lambda expression contains more than one statement/logic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38550545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com