Search code examples
sortingjava-8java-streamprimitive

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


Here is an example class. I know the simplest thing would be to change the members from primitive type int to object Integer and use stream/lambda/sorted, but there may be reasons to only have a primitive type int such as space. How could I use the streams API to sort a List<DateRange> by int member startRange?

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;
    }
}

Solution

  • You may do it like so,

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