【发布时间】:2020-08-16 06:02:14
【问题描述】:
我有这个方法很好用,但是有什么更简洁的方法吗?
目前我已将比较器添加到地图中,并根据用户选择的值获得正确的比较器。
private Comparator<? super BusinessPartnerAssignmentDetail> getComparator(PortfolioFilterDto portfolioFilterDto){
Map<String, Comparator<? super BusinessPartnerAssignmentDetail>> sortingOptions = new HashMap<>();
sortingOptions.put("fieldOfficeDescription", Comparator.comparing(BusinessPartnerAssignmentDetail::getFieldOfficeDescription, Comparator.nullsLast(Comparator.naturalOrder())));
sortingOptions.put("locationDescription", Comparator.comparing(BusinessPartnerAssignmentDetail::getLocationDescription, Comparator.nullsLast(Comparator.reverseOrder())));
sortingOptions.put("segmentType", Comparator.comparing(BusinessPartnerAssignmentDetail::getSegmentType, Comparator.nullsLast(Comparator.reverseOrder())));
sortingOptions.put("displayName", Comparator.comparing(BusinessPartnerAssignmentDetail::getDisplayName, Comparator.nullsLast(Comparator.reverseOrder())));
return sortingOptions.get(portfolioFilterDto.getSortParameter());
}
然后我像这样调用列表中的排序
businessPartnerAssignmentDetails.sort(getComparator(portfolioFilterDto));
【问题讨论】:
标签: java lambda java-8 comparator