Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何收集地图<;字符串,列表<;字符串>&燃气轮机;要实现该列表已排序?_Java_Sorting_Collections_Java 8_Java Stream - Fatal编程技术网

Java 如何收集地图<;字符串,列表<;字符串>&燃气轮机;要实现该列表已排序?

Java 如何收集地图<;字符串,列表<;字符串>&燃气轮机;要实现该列表已排序?,java,sorting,collections,java-8,java-stream,Java,Sorting,Collections,Java 8,Java Stream,我有这样的代码: final TreeMap<String, List<MyBean>> map= elements.stream() .filter(....) .collect(Collectors.groupingBy(MyBean::getName, TreeMap::new, Collectors.toL

我有这样的代码:

final TreeMap<String, List<MyBean>> map= elements.stream()
                .filter(....)
                .collect(Collectors.groupingBy(MyBean::getName,
                        TreeMap::new,
                        Collectors.toList()
                ));
final TreeMap map=elements.stream()
.过滤器(…)
.collect(收集器.groupingBy(MyBean::getName、,
树映射::新的,
收集者
));

如何实现该列表是按
someStringField
排序的?

您可以添加一个
收集器#collecting,然后
到您的
收集器#toList
下游:

final TreeMap<String, List<MyBean>> map = elements.stream()
      .collect(Collectors.groupingBy(MyBean::getName,
              TreeMap::new,
              Collectors.collectingAndThen(
                      Collectors.toList(),
                      l -> {
                          l.sort(Comparator.comparing(MyBean::getSomeStringField));
                          return l;
                      })
      ));
final TreeMap map=elements.stream()
.collect(收集器.groupingBy(MyBean::getName、,
树映射::新的,
收藏,收藏,然后(
Collectors.toList(),
l->{
l、 排序(Comparator.comparing(MyBean::getSomeStringField));
返回l;
})
));

我建议您检查另一个线程中提出的解决方案:


你必须经过分拣机。树映射本身不可排序。

hmmm。。。这会导致编译错误。您能检查一下吗?错误:(50,21)java:不兼容类型:推理变量RR具有不兼容的边界相等约束:java.util.List,D,V下限:void看起来您没有返回l;语句。@谢谢您的编辑。我以前没有试过,它只是临时写的。