Stream<Emp>怎么筛选出来非空数据
时间: 2024-02-09 08:08:30 浏览: 55
您可以使用Java 8中的Stream API来筛选出非空数据。可以使用filter()方法来过滤Stream中的元素。使用lambda表达式可以检查每个元素是否为null,如果元素不为null,则将其包含在输出Stream中。以下是一个示例代码:
```
List<Emp> empList = new ArrayList<>();
// 填充empList
List<Emp> nonNullEmpList = empList.stream()
.filter(emp -> emp != null)
.collect(Collectors.toList());
```
在上面的示例代码中,我们首先将一个Emp对象列表存储在empList中。然后,我们使用stream()方法将其转换为Stream对象。接着,我们使用filter()方法过滤掉为null的元素。最后,我们使用collect()方法将过滤后的元素列表收集到另一个List对象中。这个新的List对象就是我们需要的非空Emp对象列表。
相关问题
postMdCodeList.stream().flatMap(postMdCode->empService.selectEmpByPostAndBusinessTree(postMdCode, Collections.singletonList(shopMdCode), 0, 1).stream()).filter();这个我最终要返回List<Emp>怎么做
您可以使用Stream API中的collect()方法将Stream转换为List。在您提供的代码中,flatMap()方法将多个Stream合并成一个Stream,filter()方法将不符合条件的元素过滤掉,最后剩下的元素就是符合条件的Emp对象。您可以使用以下代码将这些Emp对象收集到一个List中:
```
List<Emp> empList = postMdCodeList.stream()
.flatMap(postMdCode -> empService.selectEmpByPostAndBusinessTree(postMdCode, Collections.singletonList(shopMdCode), 0, 1).stream())
.filter(emp -> emp != null) // 过滤掉null元素
.collect(Collectors.toList()); // 将Stream转换为List
```
在上面的代码中,我们使用Collectors.toList()方法将Stream转换为List。这个List包含了所有符合条件的Emp对象。请注意,我们添加了一个额外的filter()方法来过滤掉null元素,以确保我们最终得到的Emp对象列表不包含null元素。
List<Employee> hrEmpList转换为Map<String, String> empCodeMap empCode为key,不能为空; isMain为value,isMain为空则转成“-”
可以使用Java 8的Stream API来完成这个任务。代码如下:
```
Map<String, String> empCodeMap = hrEmpList.stream()
.filter(emp -> emp.getEmpCode() != null)
.collect(Collectors.toMap(Employee::getEmpCode, emp -> emp.getIsMain() != null ? emp.getIsMain() : "-"));
```
首先使用stream()将hrEmpList转换为Stream<Employee>,然后使用filter()过滤掉empCode为空的Employee对象。接着,使用collect()将Stream<Employee>转换为Map<String, String>,其中key为Employee对象的empCode属性,value为emp对象的isMain属性,如果isMain为空则转换为“-”。
阅读全文