一、实体类
import java.io.Serializable;
import lombok.Data;
@Data
public class Contract implements Serializable {
private Integer contractCode;
private Byte isDeleted;
}
二、示例
import static java.util.Comparator.comparing;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import org.junit.Test;
import com.alibaba.fastjson.JSON;
public class LambdaSortTest {
@Test
public void sortTest1() {
List<Contract> contracts = getContracts();
System.out.println(JSON.toJSONString(contracts));
// order by contractCode asc, isDelete desc;
contracts.sort(comparing(Contract::getContractCode)
.thenComparing(comparing(Contract::getIsDeleted).reversed()));
System.out.println(JSON.toJSONString(contracts));
// order by contractCode desc, isDelete asc;
contracts.sort(comparing(Contract::getContractCode).reversed()
.thenComparing(Comparator.comparing(Contract::getIsDeleted)));
System.out.println(JSON.toJSONString(contracts));
}
@Test
public void sortTest2() {
List<Contract> contracts = getContracts();
System.out.println(JSON.toJSONString(contracts));
// order by contractCode asc, isDelete desc;
contracts.sort((Contract c1, Contract c2) -> {
int result = c1.getContractCode().compareTo(c2.getContractCode());
if (result != 0) {
if (result == 1) {
return 1;
}
} else {
result = c1.getIsDeleted() - c2.getIsDeleted();
if (result == 1) {
return -1;
}
}
return 0;
});
System.out.println(JSON.toJSONString(contracts));
}
private List<Contract> getContracts() {
List<Contract> contracts = new ArrayList<>();
contracts.add(getContract(10001, (byte) 0));
contracts.add(getContract(10001, (byte) 1));
contracts.add(getContract(10002, (byte) 0));
contracts.add(getContract(10002, (byte) 1));
contracts.add(getContract(10003, (byte) 1));
contracts.add(getContract(10003, (byte) 0));
return contracts;
}
private Contract getContract(Integer contractCode, Byte isDeleted) {
Contract c = new Contract();
c.setContractCode(contractCode);
c.setIsDeleted(isDeleted);
return c;
}
}