List<Tq>list=tqMapper.queryAll().stream().filter(x->x.getState().equals(2)).collect(Collectors.toList());解释
时间: 2024-05-29 13:09:56 浏览: 21
这段代码的作用是从 tqMapper 中查询所有 Tq 对象,然后使用 Java 8 的流式编程过滤出 Tq 对象中 state 属性值为 2 的对象,最后将过滤后的 Tq 对象集合收集到一个 List 中并返回。其中:
- tqMapper.queryAll():调用 tqMapper 中的 queryAll() 方法,返回所有 Tq 对象的集合。
- stream():将 Tq 对象集合转换为一个流。
- filter():使用 Lambda 表达式对流中的元素进行过滤,只保留 state 属性值为 2 的 Tq 对象。
- collect():将过滤后的 Tq 对象集合收集到一个 List 中。
- toList():将流中的元素收集到一个 List 中。
相关问题
List<Tq>list=tqMapper.queryAll().stream().filter(x -> x.getState().equals(2)).collect(Collectors.toList())解释
这行代码的作用是从 `tqMapper` 中查询所有的 `Tq` 对象,然后使用 `stream()` 方法将其转化为流,接着使用 `filter()` 方法过滤出状态为 2 的 `Tq` 对象,并将过滤结果转化为列表 `List<Tq>`。其中,`x -> x.getState().equals(2)` 表示使用 lambda 表达式过滤出状态为 2 的 `Tq` 对象。
优化这段代码// 入库单支付状态 if(storageFeesMap!=null && storageFeesMap.get(omsStorageBill.getStorageBatch())!=null){ List<OmsStorageFees> storageFeesList = storageFeesMap.get(omsStorageBill.getStorageBatch()); if(CollectionUtils.isNotEmpty(storageFeesList)){ long paidCount = storageFeesList.stream().filter(item -> item.getState().equals("1")).count(); // 已支付数量 long unPaidCount = storageFeesList.stream().filter(item -> item.getState().equals("2")).count(); // 未支付数量 if(unPaidCount == storageFeesList.size()){ // 表示全部未支付 omsStorageBill.setStoragePayState(1); }else if(paidCount == storageFeesList.size()){ // 表示全部已支付 omsStorageBill.setStoragePayState(3); }else if(StringUtils.add(paidCount,unPaidCount) == storageFeesList.size()){ // 表示 部分支付 omsStorageBill.setStoragePayState(2); } } }
可以考虑使用更加简洁和可读性更好的方式重构这段代码,例如:
```
if (storageFeesMap != null && storageFeesMap.containsKey(omsStorageBill.getStorageBatch())) {
List<OmsStorageFees> storageFeesList = storageFeesMap.get(omsStorageBill.getStorageBatch());
long paidCount = storageFeesList.stream().filter(item -> "1".equals(item.getState())).count();
long unPaidCount = storageFeesList.stream().filter(item -> "2".equals(item.getState())).count();
if (unPaidCount == storageFeesList.size()) {
omsStorageBill.setStoragePayState(1); // 全部未支付
} else if (paidCount == storageFeesList.size()) {
omsStorageBill.setStoragePayState(3); // 全部已支付
} else {
omsStorageBill.setStoragePayState(2); // 部分支付
}
}
```
主要的优化包括:
1. 使用 `containsKey()` 方法代替 `get()` 方法和非空判断。
2. 使用 `filter()` 方法和 lambda 表达式代替循环遍历。
3. 使用 `equals()` 方法代替 `==` 进行字符串比较。
4. 简化判断逻辑和条件表达式。
5. 添加注释提高可读性。