亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以用 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);

但由于您只是檢索 , 的一部分Task,map然后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 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號