list.stream.collect
时间: 2023-04-29 22:02:54 浏览: 117
list.stream.collect是Java 8中的一个方法,用于将一个流转换为一个集合。它可以接受一个Collector参数,该参数定义了如何将流中的元素收集到集合中。常见的Collector包括toList()、toSet()、toMap()等。例如,list.stream().collect(Collectors.toList())将一个List转换为一个List集合。
相关问题
List<RsysMenu> rootMenus = list.stream().filter(item -> "M".equals(item.getParentId())).sorted().collect(Collectors.toList()); List<RsysMenu> rootMenus = list.stream().filter(item -> "M".equals(item.getParentId())).sorted().collect(Collectors.toList()); List<RsysMenu> rootMenus = list.stream().filter(item -> "M".equals(item.getParentId())).sorted().collect(Collectors.toList()); List<RsysMenu> rootMenus = list.stream().filter(item -> "M".equals(item.getParentId())).sorted().collect(Collectors.toList()); List<RsysMenu> rootMenus = list.stream().filter(item -> "M".equals(item.getParentId())).sorted().collect(Collectors.toList());
这段代码是一个Java代码片段,它的作用是从一个列表中过滤出所有父节点为"M"的菜单项,并按照一定规则进行排序,最后将结果收集到一个新的列表中。
首先,通过使用`stream()`方法将列表转换为流,然后使用`filter()`方法过滤出父节点为"M"的菜单项。接着,使用`sorted()`方法对菜单项进行排序。最后,使用`collect()`方法将过滤和排序后的菜单项收集到一个新的列表中。
请注意,代码中多次出现的重复行是输入错误,应该删除多余的行。正确的代码应该是这样的:
```java
List<RsysMenu> rootMenus = list.stream()
.filter(item -> "M".equals(item.getParentId()))
.sorted()
.collect(Collectors.toList());
```
这样,你就可以得到一个包含所有父节点为"M"的菜单项,并按照排序规则排列的列表。
List<String> list= new ArrayList<>(); List<String> leaderId = departs.stream().filter(depart -> StringUtils.isNotBlank(depart.getFdLeaderId())).map(Depart::getFdLeaderId).collect(Collectors.toList()); List<String> etxLeaderId = departs.stream().filter(depart -> StringUtils.isNotBlank(depart.getFdLeaderExtId())).map(Depart::getFdLeaderExtId).collect(Collectors.toList()); list = account.stream().filter(departAccountVo -> StringUtils.isNotBlank(departAccountVo.getFdAccountId())).map(DepartAccountVo::getFdAccountId).collect(Collectors.toList()); list.addAll(leaderId); list.addAll(etxLeaderId); list = list.stream().distinct().collect(Collectors.toList()); 优化这段代码
可以使用链式调用的方式,避免重复的流操作,同时也可以在收集器中使用toSet()方法来去重。优化后的代码如下:
```
List<String> list = departs.stream()
.flatMap(depart -> Stream.of(depart.getFdLeaderId(), depart.getFdLeaderExtId()))
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList());
list.addAll(account.stream()
.map(DepartAccountVo::getFdAccountId)
.filter(StringUtils::isNotBlank)
.collect(Collectors.toList()));
```
阅读全文