能否不加判断 而是直接过滤掉out_trade_no为空的数据
时间: 2024-03-09 13:45:26 浏览: 16
是的,你可以使用`filter`方法来过滤掉`out_trade_no`为空的数据,这样就不需要在`map`操作中进行非空判断了。示例如下:
```
String[] orderNoList = list.stream()
.filter(vo -> vo.getOut_trade_no() != null)
.map(HeLiangPageVo::getOut_trade_no)
.toArray(String[]::new);
```
这样做的话,`filter`方法会将`out_trade_no`属性为空的`HeLiangPageVo`对象过滤掉,不会被包含在最终的`orderNoList`数组中。然后再使用`map`方法将剩余的`HeLiangPageVo`对象的`out_trade_no`属性映射为一个字符串,最后使用`toArray`方法将其转换为一个字符串数组。
相关问题
若以下代码中out_trade_no属性为空是否会报错 要怎么解决String[] orderNoList = list.stream().map(HeLiangPageVo::getOut_trade_no).toArray(String[]::new);
如果`HeLiangPageVo`对象中的`out_trade_no`属性为空,那么在执行`map`操作时会返回一个`null`值,因此在调用`toArray`方法时可能会抛出`NullPointerException`异常。
为了避免这种情况,可以在`map`操作时对`out_trade_no`属性进行非空判断,如果为空则返回一个指定的默认值,例如:
```
String[] orderNoList = list.stream()
.map(vo -> vo.getOut_trade_no() != null ? vo.getOut_trade_no() : "")
.toArray(String[]::new);
```
以上代码中,如果`out_trade_no`属性为空,则返回空字符串`""`。这样可以保证`orderNoList`数组中不会出现`null`值。
mysql count distinct trade_no 加判断
你可以使用MySQL的COUNT(DISTINCT)函数来计算具有特定判断条件的不重复trade_no的数量。下面是一个示例查询的语法:
```sql
SELECT COUNT(DISTINCT trade_no)
FROM your_table
WHERE your_condition;
```
在上述语法中,将"your_table"替换为您要查询的表名,"trade_no"替换为要计算不重复值的列名,"your_condition"替换为您的判断条件。这将返回满足条件的不重复trade_no的数量。
请注意,如果您有其他需要,请提供更具体的问题和要求。