【发布时间】:2021-07-17 08:30:00
【问题描述】:
我正在尝试 Java 8 stream() API 来执行一些操作,但我无法实现所需的输出。
仅更新现有列表,我不想返回更新后的列表。请检查以下查询以及我正在尝试的相同内容。
-
我想将 id 分配给未分配 id 的学生,即该对象的 id 为 null 或空白。所以我只想执行这个操作,不想要任何回报,下面是我正在尝试的,但我不知道如何在不返回更新列表的情况下停止此操作。
students.stream().filter(StringUtils.isNullOrBlank(s->s.getId())).map(e-> e.setId(randomNum++)) -
另一个是我想获取更新 id 的学生姓名列表。我正在尝试以下 2 种不同的操作,但我们可以一次完成吗?
List<Student> studList = employees.stream().filter(StringUtils.isNullOrBlank(s->s.getId())).map(e-> e.setId(randomNum++)).collect(Collectors.toList()); List<String> names = studList.stream().map(s->s.getName()).collect(Collectors.toList());
【问题讨论】:
-
如果你想更新现有的列表,那么
stream是错误的。但是看起来你并不想改变列表,你只是想在每个元素上调用一个方法,那为什么不使用forEach呢?