【发布时间】:2018-02-20 10:00:13
【问题描述】:
我有以下对象DataPoint:
public class DataPoint {
private String name:
private int uploadIndex;
...
}
我有清单:
{uploadIndex:1, name:"name_1"}
{uploadIndex:5, name:"name_2"}
{uploadIndex:3, name:"name_3"}
{uploadIndex:3, name:"name_4"}
{uploadIndex:4, name:"name_5"}
{uploadIndex:5, name:"name_6"}
{uploadIndex:2, name:"name_7"}
{uploadIndex:4, name:"name_8"}
我想将其转换为按uploadIndex 排序的List<List<DataPoint>>。
结果应该是(内部列表中的排序并不重要):
{
{uploadIndex:1, name:"name_1"}
}
{
{uploadIndex:2, name:"name_7"}
}
{
{uploadIndex:3, name:"name_3"}
{uploadIndex:3, name:"name_4"}
}
{
{uploadIndex:4, name:"name_5"}
{uploadIndex:4, name:"name_8"}
}
{
{uploadIndex:5, name:"name_2"}
{uploadIndex:5, name:"name_6"}
}
我写了以下代码:
List<DataPoint> dataPoints = getFromDb();
Map<Integer, List<DataPoint>> groupedDataPoints = dataPoints.stream()
.collect(Collectors.groupingBy(DataPoint::getUploadIndex, TreeMap::new, Collectors.toList()));
List<List<DataPoint>> groupedList = new ArrayList<>(groupedDataPoints.values());
1.此代码是否保证订购?
2、有没有更简洁的实现方式?
【问题讨论】:
-
是的,但我猜无法保证将订购具有相同
uploadIndex的订单对象 -
@user7 在内部列表中排序对我来说并不重要
标签: java collections java-8 java-stream