对一个名为voList的列表(假设为List<CourierTradeOrderVO>类型)进行排序和处理的。这里使用了Stream API来操作集合,并结合了AtomicInteger来设置每个元素的排序序号。
首先,它通过.stream()方法将列表转换为流,然后使用.sorted()方法根据CourierTradeOrderVO类中的getShopAndCustomerDistance()方法返回的距离值进行升序排序。
接着,.map()方法遍历排序后的流中的每一个元素,在映射操作中,给每个CourierTradeOrderVO对象设置一个序号。这个序号是由一个全局共享的AtomicInteger实例num提供,利用其getAndIncrement()方法获取并自增当前值,确保序号从0开始递增。
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;public class Example {
public static void main(String[] args) {
List<CourierTradeOrderVO> voList = ... // 初始化你的订单列表AtomicInteger num = new AtomicInteger(0);
List<CourierTradeOrderVO> sortedOrders = voList.stream()
.sorted(Comparator.comparing(CourierTradeOrderVO::getShopAndCustomerDistance))
.map(courierTradeOrderVO -> {
courierTradeOrderVO.setMarkSort(num.getAndIncrement());
return courierTradeOrderVO;
})
.collect(Collectors.toList());// 现在,sortedOrders是一个按距离排序且每个元素都有一个序号的订单列表
}
}class CourierTradeOrderVO {
private double shopAndCustomerDistance;
private int markSort;// 其他属性、构造器与getter/setter...
public double getShopAndCustomerDistance() {
return shopAndCustomerDistance;
}public void setMarkSort(int sort) {
this.markSort = sort;
}
}
注意:这里的...代表你需要填充实际的订单列表数据源。