如何在 Java 中使用 lambda 打印字符串数组列表

Raj*_*009 0 java java-8 java-11

这是我的代码:

List<String[]> salaries = getSalariesByMonth();

//I am using the old way to print the data
for (String[] obj : rates) {
    System.out.println("User name: "obj[0]+"--"+"Salary: "+obj[1]);   //obj[0] is NAME,  obj[1] is SALARY
}

//I am trying to use this way to print the data but unable to do so.
salaries.forEach(s-> System.out.println("print NAME and SALARY"));
Run Code Online (Sandbox Code Playgroud)

如何使用 Lambda 打印包含字符串数组的列表。先感谢您。

kni*_*ttl 6

要将 for-each 循环转换为forEach调用,一般模式是:

for (final var x : xs) {
  statements;
}
// becomes:
xs.forEach(x -> { statements; });
// with a single statement, braces are optional:
xs.forEach(x -> statement);
Run Code Online (Sandbox Code Playgroud)

形式的 lambda(x, y) -> { statements; }大多等价于形式的方法:

… yourMethod(final … x, final … y) {
  statements;
}
Run Code Online (Sandbox Code Playgroud)

当遇到 lambda 时,编译器会自动推断返回类型和参数类型。


所以在你的情况下,这将是:

salaries.forEach(obj -> System.out.println("User name: "+obj[0]+"--"+"Salary: "+obj[1]));
Run Code Online (Sandbox Code Playgroud)

您还可以使用流首先将每个对象映射到字符串表示,然后在终端操作中输出每个项目:

salaries.stream()
        .map(obj -> "User name: "+obj[0]+"--"+"Salary: "+obj[1])
        .forEach(s -> System.out.println(s));
Run Code Online (Sandbox Code Playgroud)

由于System.out.println期望恰好有一个与 lambda 参数匹配的参数,因此可以将其替换为方法引用,在某些情况下它可以更具可读性:.forEach(System.out::println)