小编dee*_*pan的帖子

将 for 循环和 if 条件转换为流、过滤、收集

我正在尝试将此 for 循环和 if 条件转换为 Java 流、过滤和收集

final List<Optional<String>> students = listofstudents.get();

final List<String> finalist = new ArrayList<>(students.size());

for(int i=0; i<students.size(); i++) {
    if(students.get(i).isPresent()) {
        finalist.add(students.get(i).get());
    }
    else {
        finalist.add(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过这个:

List<String>result = null;

students.stream()
        .filter(e -> e.isPresent())
        .map(e->result.add(e))
        .orElse(result.add(null)
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

然而,这是完全错误的。我无法让它按预期工作

有人可以告诉我应该如何使用流、过滤器、收集来做到这一点吗?

java filter collect java-stream

-1
推荐指数
1
解决办法
511
查看次数

标签 统计

collect ×1

filter ×1

java ×1

java-stream ×1