【发布时间】:2019-07-03 09:41:54
【问题描述】:
我是 lambda 表达式和函数式编程的新手。
我使用 java 8 编写了下面的代码 sn-p。
List<Employee> myList = new ArrayList<>();
Map<String, List<Integer>> mapOf = new HashMap<>();
mapOf.put("key1", Arrays.asList(1, 2, 3));
mapOf.put("key2", Arrays.asList(4, 5, 6));
mapOf.put("key3", Arrays.asList(7, 8));
mapOf.forEach((k ,v) -> {
Employee emp = new Employee();
v.stream().forEach(o ->{
emp.setFirstName("John Doe");
myList.add(emp);
System.out.println("Posting Data for :: " + k + " :: " + o);
});
});
预期输出
Posting Data for :: key1 :: 1
Posting Data for :: key1 :: 2
Posting Data for :: key1 :: 3
Posting Data for :: key2 :: 4
Posting Data for :: key2 :: 5
Posting Data for :: key2 :: 6
Posting Data for :: key3 :: 7
Posting Data for :: key3 :: 8
上面的代码按预期工作,但它是一个 spaghetti 代码。
我读过很多文章说我们不应该在 lambda 表达式中使用 { },因为它会使代码难以理解。
所以,现在我正在尝试将其转换为 Functional 方式。
请帮忙。
【问题讨论】:
-
mapOf.forEach((k ,v) -> v.forEach(o ->System.out.println("Posting Data for :: " + k + " :: " + o))); -
如果你只需要值
mapOf.forEach((k ,v) -> v.forEach(System.out::println)); -
你试过什么?你到底卡在哪里了?
-
我已更新代码并尝试转换此代码,抱歉各位。
-
你到底想在这里实现什么?
标签: lambda java-8 functional-programming