若以下代码中out_trade_no属性为空是否会报错 要怎么解决String[] orderNoList = list.stream().map(HeLiangPageVo::getOut_trade_no).toArray(String[]::new);
时间: 2024-03-09 08:45:25 浏览: 19
如果`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`值。
相关问题
能否不加判断 而是直接过滤掉out_trade_no为空的数据
是的,你可以使用`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`方法将其转换为一个字符串数组。
G1 = nx.from_pandas_edgelist(df_trade.loc[df_trade["转账方向"] == "贷"],
df_trade.loc[df_trade["转账金额"] > 1000], source="转账方", target="收款方", edge_attr=["转账金额", "交易时间"])
这行代码是将一个 pandas DataFrame 中的数据转化为一个 NetworkX 图,其中只保留了转账方向为贷和转账金额大于1000的交易,同时将转账方和收款方作为节点,转账金额和交易时间作为边的属性。