new*_*mer 1 java grouping list java-stream collectors
我有简单对象的列表:
private String unit;
private Double value;
Run Code Online (Sandbox Code Playgroud)
列表看起来像这样:
f, 1.0;
ml, 15.0;
g, 9.0
Run Code Online (Sandbox Code Playgroud)
我创建了一个简单的函数,希望将这些值分组并以unit为键将它们放入地图,并将对象列表作为值,但是我想像在原始列表中那样保存顺序。这是我目前的解决方案:
myList.stream()
.collect(groupingBy(MyObject::getUnit));
Run Code Online (Sandbox Code Playgroud)
但是之后,我的地图按字母顺序排序:f,g,ml,而不是f,ml,g。有没有其他分组方法可以解决?
And*_*ner 10
问题是groupingBy将事物放到某些地图中,可能是HashMap,没有确定的顺序。
使用带有的groupingBy重载Supplier<M> mapFactory来获得具有订购保证的地图,例如
myList.stream()
.collect(groupingBy(MyObject::getUnit,
LinkedHashMap::new,
Collectors.toList()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |