如何使用 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
成员 startRange
对 List<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));
这是一个例子class。我知道最简单的事情是将成员从原始类型 int
更改为对象 Integer
并使用 stream/lambda/sorted,但可能有理由只使用原始类型 int
比如space。
我如何使用流 API 按 int
成员 startRange
对 List<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));