Java对数组中对象进行正序或逆序排序

对象实体如下

@Data
@Accessors(chain = true)
@ApiModel("车辆位置信息模型")
public class BicycleLocationModel implements Serializable {

    @ApiModelProperty("纬度")
    private Double latitude;
    @ApiModelProperty("经度")
    private Double longitude;
    @ApiModelProperty("时间点")
    private long gt;

}

根据对象某个字段,比如gt进行排序
构造如下方法,其中正序排序如下
方法一

    private void sort(ArrayList<BicycleLocationModel> bicycleLocationModels){
        bicycleLocationModels.sort(
            Comparator.comparing(bicycleLocationModel -> bicycleLocationModel.getGt())
        );
    }

方法二

bicycleLocationModels.sort((b1, b2) -> {
    Long t1 = b1.getGt();
    Long t2 = b2.getGt();
    return t1.compareTo(t2);//正序排序
});

也可以直接在sort方法中传入java中提供的逆序比较器实现逆序排序
Collections.reverseOrder();

API的解释:
返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。(自然顺序是通过对象自身的 compareTo 方法强行排序的。)此方法允许使用单个语句,以逆自然顺序对实现了 Comparable 接口的对象 collection(或数组)进行排序(或维护)

具体实现如下:
方法一

    private void sort(ArrayList<BicycleLocationModel> bicycleLocationModels){
        bicycleLocationModels.sort(
            Comparator.comparing(bicycleLocationModel -> bicycleLocationModel.getGt(),Collections.reverseOrder())
        );
    }

方法二

bicycleLocationModels.sort((b1, b2) -> {
    Long t1 = b1.getGt();
    Long t2 = b2.getGt();
    return t2.compareTo(t1);//倒序排序
});
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值