为了账号安全,请及时绑定邮箱和手机立即绑定

我可以用 Java 中的 List 以哪种方式写出 for 循环?

我可以用 Java 中的 List 以哪种方式写出 for 循环?

慕码人8056858 2021-06-08 15:12:14
是否可以使用 Lambda 表达式或更好的方法来写下 for 循环?public TaskDTO convertToDTO(Task task) {    for (int i = 0; i < task.getPrecedingTasks().size(); i++)        this.precedingTasks.add(task.getPrecedingTasks().get(i).getName());}
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

您的解决方案很好:

task.getPrecedingTasks().stream().map(Task::getName).forEach(this.precedingTasks::add);

但由于您只是检索 , 的一部分Taskmap然后collect作为列表:

this.precedingTasks = task.getPrecedingTasks().stream().map(Task::getName).collect(Collectors.toList());

是不是更简单易懂?因为stream这里是做映射/转换然后收集。

而且通过这种方式,您不需要对this.precedingTasksas进行初始化

this.precedingTasks = new ArrayList<>(); // to ensure it's not null;

无论如何,这里只是个人喜好。


查看完整回答
反对 回复 2021-06-17
?
jeck猫

TA贡献1909条经验 获得超7个赞

这是一个完整的例子,我把 System.out.println ... 你应该使用 this.precedingTasks.addAll( ...


import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.stream.Collectors;


public class Main {


    public static void main(String[] args) {


        Task t1 = new Task("myTask", Arrays.asList(new Task("innerTask1"), new Task("innerTask2")));

        System.out.println(t1.precedingTasks.stream().map(Task::getName).collect(Collectors.toList()));


    }


    static class Task {


        private String name;

        private List<Task> precedingTasks = new ArrayList<>();


        public Task(String name) {

            this.name = name;

        }


        public Task(String name, List<Task> precedingTasks) {

            this.name = name;

            this.precedingTasks = precedingTasks;

        }


        public String getName() {

            return name;

        }


        public List<Task> getPrecedingTasks() {

            return precedingTasks;

        }

    }

}

输出是


[innerTask1, innerTask2]


查看完整回答
反对 回复 2021-06-17
?
长风秋雁

TA贡献1757条经验 获得超7个赞

我在我的案例中找到了正确的解决方案:

task.getPrecedingTasks().stream().map(Task::getName).forEach(this.precedingTasks::add);

谢谢,提示:)


查看完整回答
反对 回复 2021-06-17
  • 3 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信