Java8 使用 lambda 對 List、Set 進行排序


 

數據結構

public class InsurerClientDto {

    private Long insurerClientId;
    private String clientOidType;
    private Long clientOid;
    private String clientCode;
    private String clientDesc;
    private Long hqHdrId;

    public InsurerClientDto() {
        //Default constructor
    }

    public void setInsurerClientId(Long insurerClientId) {
        this.insurerClientId = insurerClientId;
    }

    public Long getInsurerClientId() {
        return insurerClientId;
    }

    public void setClientOidType(String clientOidType) {
        this.clientOidType = clientOidType;
    }

    public String getClientOidType() {
        return clientOidType;
    }

    public void setClientOid(Long clientOid) {
        this.clientOid = clientOid;
    }

    public Long getClientOid() {
        return clientOid;
    }

    public String getClientCode() {
        return clientCode;
    }

    public void setClientCode(String clientCode) {
        this.clientCode = clientCode;
    }

    public void setClientDesc(String clientDesc) {
        this.clientDesc = clientDesc;
    }

    public String getClientDesc() {
        return clientDesc;
    }

    public Long getHqHdrId() { return hqHdrId; }

    public void setHqHdrId(Long hqHdrId) { this.hqHdrId = hqHdrId; }

    @Override
    public String toString() {
        return "InsurerClientDto [insurerClientId=" + insurerClientId + ", clientOidType=" + clientOidType
                + ", clientOid=" + clientOid + ", clientCode=" + clientCode + ", clientDesc=" + clientDesc
                + ", hqHdrId=" + hqHdrId + "]";
    }
}

 

 

 

數據准備

List<InsurerClientDto> insurerClientDto = new ArrayList<>();
InsurerClientDto dto
= new InsurerClientDto(); dto.setClientCode("KP03S"); insurerClientDto.add(dto);
dto
= new InsurerClientDto(); dto.setClientCode("KP048"); insurerClientDto.add(dto);
dto
= new InsurerClientDto(); dto.setClientCode("KP003"); insurerClientDto.add(dto);

 

 

3種方法

1、不能實現排序

Comparator<InsurerClientDto> clinentComparator = (v1, v2) -> v1.getClientCode().compareTo(v2.getClientCode());
insurerClientDto.stream().sorted(clinentComparator.reversed());

不能實現排序原因:

 

 

2、可以實現排序

Comparator<InsurerClientDto> clinentComparator = Comparator.comparing(InsurerClientDto :: getClientCode, String.CASE_INSENSITIVE_ORDER);
insurerClientDto.sort(clinentComparator);

 

 

 

3、可以實現排序

insurerClientDto.sort((d1, d2) -> d1.getClientCode().compareTo(d2.getClientCode()));
//或(用法相同,上面省略類名而已)
insurerClientDto.sort((InsurerClientDto d1, InsurerClientDto d2) -> d1.getClientCode().compareTo(d2.getClientCode()));

 

原文鏈接:

https://www.cnblogs.com/poterliu/p/13231500.html

 

 

參考鏈接:

https://developer.aliyun.com/article/714142

https://my.oschina.net/HJCui/blog/1573344

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM