【发布时间】:2020-10-01 03:35:41
【问题描述】:
我试图实现的是对具有两个条件的列表进行排序,我想对对象内部的基于列表进行排序,当它是 null 时,我希望它最后排序。
这是我所做的,这是我的 UnAssignedSoResponse.java 对象:
public class UnAssignedSoResponse {
public Double cbm;
public ShipmentAddressGroupingResponseHdOnlyDto shipmentAddressGroupingResponseHdOnlyDto;
}
这是我在服务中的代码的样子:
List<UnAssignedSoResponse> unAssignedSoResponse = ObjectMapperUtils.mapAll(salesOrders, UnAssignedSoResponse.class);
unAssignedSoResponse.sort(Comparator.comparing(u -> u.getShipmentAddressGroupingResponseHdOnlyDto().getShipmentGroupName()),Comparator.nullsLast(Comparator.naturalOrder()));
我的变量unAssignedSoResponse 上方是一个列表,我希望它基于名为shipmentAddressGroupingResponseHdOnlyDto 的列表进行排序,有时shipmentAddressGroupingResponseHdOnlyDto 是null,我想在列表的最后设置null。但是如果我写类似上面的东西,我在“排序”中出现错误,带有红色下划线,错误是:
The method sort(Comparator<? super UnAssignedSoResponse>) in the type List<UnAssignedSoResponse> is not applicable for the arguments (Comparator<UnAssignedSoResponse>, Comparator.nullsLast(Comparator.naturalOrder()))
如果我想根据 shippingGroupName 进行排序,我可以这样做:
unAssignedSoResponse.sort(Comparator.comparing(u -> u.getShipmentAddressGroupingResponseHdOnlyDto().getShipmentGroupName()));
我如何排序null那边的安全?
更新:
我更新了我的代码,因为 Louis Wasserman 回答了这样的问题:
unAssignedSoResponse.sort(
Comparator.nullsLast(
Comparator.comparing(
u -> u.getShipmentAddressGroupingResponseHdOnlyDto(),
Comparator.nullsLast(Comparator.comparing(d -> d.getShipmentGroupName()))
)
)
);
没有错误,但我的列表最终不会对 ArrayList 的 null 进行排序,而且根本不会排序,我错过了什么?
【问题讨论】:
标签: java spring sorting arraylist