List<QuestPersonnelAlteration> quList = questPersonnelAlterationMapper.selectQuestPersonnelAlterationList(qu); //数据库人员id集合 List<String> oldList = quList.stream() .filter(x -> 1== x.getType()) .map(x -> x.getPersonnel()) .collect(Collectors.toList()); 如果quList为空,oldList会是什么结果
时间: 2024-04-24 09:21:34 浏览: 80
如果`quList`为空,即数据库查询结果为空,那么在使用`stream()`方法之后对其进行过滤、映射和收集的操作时,最终的结果将是一个空的`oldList`列表。这是因为在空的`quList`上进行操作时,不会有任何元素满足过滤条件(`1== x.getType()`),因此没有任何元素被映射和收集到`oldList`中。
相关问题
Map<String, List<String>> 用computeIfPresent添加元素
`Map<String, List<String>>` 是一个键值对的映射,其中键是字符串,值是包含字符串的列表。`computeIfPresent` 是 `Map` 接口中的一个函数,它的作用是在当前键存在的情况下应用给定的函数(`Function`),如果计算结果非空,则替换原有的值;如果键不存在则不做任何操作。
当你想使用 `computeIfPresent` 添加元素时,假设你有一个默认的行为(比如创建一个新的列表并添加新的元素),你可以这样做:
```java
Map<String, List<String>> map = ...; // 初始化map
// 定义一个函数,接收旧值(如果存在)、新元素和是否更新(true)
BiFunction<List<String>, String, List<String>> function =
(oldList, element) -> oldList == null ? Collections.singletonList(element) : oldList.add(element);
// 使用computeIfPresent,如果键对应的值存在,就将element添加到该列表,并返回处理后的列表;
// 如果不存在,创建一个新列表只包含element
String key = "key";
map.computeIfPresent(key, function);
```
这里的关键点在于,`function` 接收原值(如果有的话)和你想添加的新元素,然后返回更新后的列表。如果键不在 map 中,它会创建一个新的 list 并添加元素。
Stream将list<map>转成list<Map<String,Object>>并排序
可以按照以下步骤将list<map>转成list<Map<String,Object>>并排序:
1. 遍历list<map>,将每个map转成Map<String,Object>类型,并添加到新的List中。可以使用Java8的Stream API来实现,代码如下:
```
List<Map<String, Object>> newList = oldList.stream()
.map(map -> new HashMap<String, Object>(map))
.collect(Collectors.toList());
```
2. 使用Collections.sort()方法对新的List进行排序。可以自定义Comparator来指定排序规则,比如按照某个键值的大小进行排序。代码如下:
```
Collections.sort(newList, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
// 比较规则,比如按照键值为"age"的大小进行排序
return Integer.compare((int) o1.get("age"), (int) o2.get("age"));
}
});
```
注意,这里我假设每个map中都包含一个名为"age"的整型键值,你需要根据实际情况来修改比较规则。
阅读全文