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 22:21:34 浏览: 8
如果`quList`为空,即数据库查询结果为空,那么在使用`stream()`方法之后对其进行过滤、映射和收集的操作时,最终的结果将是一个空的`oldList`列表。这是因为在空的`quList`上进行操作时,不会有任何元素满足过滤条件(`1== x.getType()`),因此没有任何元素被映射和收集到`oldList`中。
相关问题
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"的整型键值,你需要根据实际情况来修改比较规则。
一个list<A> A中包含但是仅仅只有id,name,age字段 我想要的到一个只包含id,name,age的list,要怎么做
假设您的List<A>集合中的元素是这样的:
```java
class A {
private Integer id;
private String name;
private Integer age;
// 省略getter和setter方法
}
```
现在您想要根据id、name和age字段获取一个新的List集合,只包含这三个字段。您可以使用Java 8中的Stream API来完成这个任务,具体代码如下:
```java
List<A> oldList = ... // 原始List集合
List<A> newList = oldList.stream()
.map(a -> new A(a.getId(), a.getName(), a.getAge()))
.collect(Collectors.toList());
```
以上代码中,我们使用Stream API的map方法将原始的List<A>集合中的每个元素转换成新的A对象。转换时,我们只保留id、name和age字段,其它字段都舍弃。最后使用collect方法将转换后的新List<A>集合收集起来。
需要注意的是,如果A类没有提供构造方法来接收id、name和age参数,您需要手动添加一个构造方法。如果您使用的是Lombok等工具类来生成构造方法,则需要在Lombok注解中指定需要包含哪些字段。