【问题标题】:How to write below code to functional way using java 8如何使用java 8将以下代码编写为功能方式
【发布时间】: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) -&gt; v.forEach(o -&gt;System.out.println("Posting Data for :: " + k + " :: " + o)));
  • 如果你只需要值mapOf.forEach((k ,v) -&gt; v.forEach(System.out::println));
  • 你试过什么?你到底卡在哪里了?
  • 我已更新代码并尝试转换此代码,抱歉各位。
  • 你到底想在这里实现什么?

标签: lambda java-8 functional-programming


【解决方案1】:

这可能就是你想要的

ArrayList<Employee> myL = mapOf.entrySet()
        .stream()
            .map(en ->
                  en.getValue().stream()
                    .map(l ->{
                        Employee emp = new Employee();
                        emp.setFirstName("John Doe");
                        System.out.println("Posting Data for :: " + en.getKey() + " :: " + l);
                        return emp;
                    }).collect(Collectors.toList())
                )
            .collect(ArrayList::new, ArrayList::addAll,ArrayList::addAll);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    相关资源
    最近更新 更多