如何使用 Java 8 个流按原始 int 成员对对象的 ArrayList 进行排序?

How can I use Java 8 streams to sort an ArrayList of objects by a primitive int member?

这是一个例子class。我知道最简单的事情是将成员从原始类型 int 更改为对象 Integer 并使用 stream/lambda/sorted,但可能有理由只使用原始类型 int比如space。 我如何使用流 API 按 int 成员 startRangeList<DateRange> 进行排序?

List<DateRange> listToBeSorted = new ArrayList<DateRange>();


static private class DateRange
{
    private int startRange ;
    private int endRange ;
    public int getStartRange() {
        return startRange;
    }
    public void setStartRange(int startRange) {
        this.startRange = startRange;
    }
    public int getEndRange() {
        return endRange;
    }
    public void setEndRange(int endRange) {
        this.endRange = endRange;
    }
}

你可以这样做,

List<DateRange> sortedList = listToBeSorted.stream()
    .sorted(Comparator.comparingInt(DateRange::getStartRange))
    .collect(Collectors.toList());

我知道您要求使用流来完成此操作,但如果您可以就地对原始列表进行排序,则不需要流。只需使用 List.sort 方法:

listToBeSorted.sort(Comparator.comparingInt(DateRange::getStartRange));