我有一个具有totalDistance属性的Distance对象.
使用java 8 steams我需要通过totalDistance对List进行排序.
我知道我可以使用以下内容对此列表进行排序:
.sorted(Comparator.comparing(Distance::totalDistance).reversed())
我的问题是我需要按特定范围对其进行排序.
例如,对获得前50个的距离进行排序,然后从50到100进行排序,依此类推……但是通过这些间隔不应该对它进行排序.
例如,使用以下列表:
List<Distance> list = new ArrayList<>();
list.add(new Distance(100));
list.add(new Distance(10));
list.add(new Distance(1));
list.add(new Distance(40));
list.add(new Distance(30));
按范围排序我会得到:
10,1,40,30,100
有关如何使用java 8实现这种排序范围间隔的任何想法?
解决方法:
我相当肯定你可以在比较它们时将值除以你的范围长度(在这种情况下是50):
List<Distance> list = Arrays.asList(new Distance(130),
new Distance(100), new Distance(10),
new Distance(1), new Distance(40), new Distance(30), new Distance(120)
);
list.sort(Comparator.comparingInt(d -> d.getTotalDistance() / 50));
list.stream().mapToInt(Distance::getTotalDistance).forEach(System.out::println); // assuming the getter for 'totalDistance'
输出:
06001