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);//倒序排序 });
下一篇:
Set容器的基本用法(Java)