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()); 优化这段代码
时间: 2024-03-12 21:49:44 浏览: 14
可以使用链式调用的方式,避免重复的流操作,同时也可以在收集器中使用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()));
```
相关问题
List< List<String> > data = new ArrayList<>();是什么意思
`List<List<String>> data = new ArrayList<>();` 是Java中定义一个二维字符串数组的语句,也可以称之为二维字符串列表。
- `List<String>` 表示存储字符串类型元素的列表,它是Java集合框架中的一种数据结构,可以动态地添加、删除和修改元素。
- `List<List<String>>` 表示存储字符串类型元素的二维列表,也就是一个列表中包含了多个列表,每个子列表中又包含了多个字符串元素。
- `new ArrayList<>()` 表示创建一个 ArrayList 实例,用来存储二维列表中的元素。
因此,`List<List<String>> data = new ArrayList<>();` 的意思就是创建一个二维列表 data,用来存储多行字符串数据,每行数据又是由多个字符串元素组成的列表。
Map<String, List<String>> oneToManyMap = new HashMap<>(); 和 List<List<String>>的区别
Map<String, List<String>>和List<List<String>>的区别如下:
1. Map<String, List<String>>是一种键值对的数据结构,其中的每个键都对应一个值而值可以是一个字符串列表。通过键可以速查找对应的值。例如,可以使用键来获取与之关联的字符串列表。
2. List<List<String>>是一个嵌套的列表结构,其中的每个元素都是一个字符串列表。它没有键值对的概念,只是一个简单的列表。可以通过索引来访问列表中的元素。例如,可以使用索引来获取嵌套列表中的特定字符串列表。
示例代码如下:
```java
// 创建一个Map<String, List<String>>对象
Map<String, List<String>> oneToManyMap = new HashMap<>();
// 向Map中添加键值对
List<String> list1 = new ArrayList<>();
list1.add("value1");
list1.add("value2");
oneToManyMap.put("key1", list1);
List<String> list2 = new ArrayList<>();
list2.add("value3");
list2.add("value4");
oneToManyMap.put("key2", list2);
// 创建一个List<List<String>>对象
List<List<String>> listOfLists = new ArrayList<>();
// 向列表中添加字符串列表
List<String> innerList1 = new ArrayList<>();
innerList1.add("value1");
innerList1.add("value2");
listOfLists.add(innerList1);
List<String> innerList2 = new ArrayList<>();
innerList2.add("value3");
innerList2.add("value4");
listOfLists.add(innerList2);
// 访问Map中的值
List<String> valuesForKey1 = oneToManyMap.get("key1");
System.out.println(valuesForKey1); // 输出:[value1, value2]
// 访问列表中的元素
List<String> innerList = listOfLists.get(0);
System.out.println(innerList); // 输出:[value1, value2]
```