作者:我的菜菜呀 | 来源:互联网 | 2023-06-01 13:51
这是我的代码:List salaries = getSalariesByMonth();//I am using the old way to print the datafor (String[]
这是我的代码:
List 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"));
如何使用 Lambda 打印包含字符串数组的列表。先感谢您。
回答
要将 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);
形式的 lambda(x, y) -> { statements; }
大多等价于形式的方法:
… yourMethod(final … x, final … y) {
statements;
}
当遇到 lambda 时,编译器会自动推断返回类型和参数类型。
所以在你的情况下,这将是:
salaries.forEach(obj -> System.out.println("User name: "+obj[0]+"--"+"Salary: "+obj[1]));
您还可以使用流首先将每个对象映射到字符串表示,然后在终端操作中输出每个项目:
salaries.stream()
.map(obj -> "User name: "+obj[0]+"--"+"Salary: "+obj[1])
.forEach(s -> System.out.println(s));
由于System.out.println
期望恰好有一个与 lambda 参数匹配的参数,因此可以将其替换为方法引用,在某些情况下它可以更具可读性:.forEach(System.out::println)