考虑一个列表List<People>
,其中元素按照People.getAge()
的升序排序。如果我们使用Collectors.groupingBy(People::getCity)
将此列表分组,那么每个组/城市的结果列表是否仍按年龄排序?Java分组收藏者保存列表顺序吗?
实际上,它似乎确实保存了顺序。我在寻找保证。
对于该方法的Javadoc说:
如果不需要的顺序保存在其中元素出现在所得到的地图集电极,使用groupingByConcurrent(功能)可以提供更好的并行性能
我不确定这是否涉及列表中的项目顺序。
你的Javadoc报价显然很明显。你为什么怀疑? –
@FrankPuffer:通过地图收集器,它是否指用于构建地图元素的toList收集器? – Prateek
@FrankPuffer:确实上面的报价*表明* groupingBy保留了订单,但遗憾的是['Collectors.groupingBy''s JavaDoc](http://docs.oracle.com/javase/8/docs/api /java/util/stream/Collectors.html#groupingBy-java.util.function.Function-)并没有对此做任何说明。这很糟糕,因为虽然我们可以看OpenJDK的实现或做实证测试,但他们告诉我们的只是实现目前的功能,而不是合同的内容。所以希望它能在JDK API文档中的某处进行说明。 –