3 回答

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
您的解決方案很好:
task.getPrecedingTasks().stream().map(Task::getName).forEach(this.precedingTasks::add);
但由于您只是檢索 , 的一部分Task
,map
然后collect
作為列表:
this.precedingTasks = task.getPrecedingTasks().stream().map(Task::getName).collect(Collectors.toList());
是不是更簡單易懂?因?yàn)?code>stream這里是做映射/轉(zhuǎn)換然后收集。
而且通過這種方式,您不需要對(duì)this.precedingTasks
as進(jìn)行初始化
this.precedingTasks = new ArrayList<>(); // to ensure it's not null;
無論如何,這里只是個(gè)人喜好。

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
這是一個(gè)完整的例子,我把 System.out.println ... 你應(yīng)該使用 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]

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
我在我的案例中找到了正確的解決方案:
task.getPrecedingTasks().stream().map(Task::getName).forEach(this.precedingTasks::add);
謝謝,提示:)
添加回答
舉報(bào)