【发布时间】:2017-03-31 17:38:39
【问题描述】:
这是我所拥有的,我想对条目中的值进行降序排序。
Map<String, Outer> outer = Input
.entrySet()
.stream
.collect(toMap(Map.Entry::getKey, entry->{
List<Outer> inner = entry
.getValue()
.stream()
.sorted(Comparator.comparingDouble(???))
})) ... (more lines of code.)
如何编写带排序的比较器。 如果想在 sorted 里面做如下操作
if (o1.getSomething() > o2.getSomething())
return -1;
if (o1.getSomething() < o2.getSomething())
return 1;
return 0;
获得列表并对其进行排序后,它对我有用。
inner.sort((Outer o1, Outer o2) -> {
if (o1.getSomething() > o2.getSomething())
return -1;
if (o1.getSomething() < o2.getSomething())
return 1;
return 0;
});
但是有没有办法在 entry 中使用 stream.sorted("在这里使用相同的比较器逻辑")。
Entry 是一个 ArrayList,有一堆值。
entry:[{w:1},{w:2},{w:3},{w:4}];
所以我想对此进行反向排序,如下所示:
entry:[{w:4},{w:3},{w:2},{w:1}];
所以我得到的最终列表是按相反顺序排序的。
抱歉造成混乱。
【问题讨论】:
-
谁投了反对票,也请给出一些解释。
-
getValue()返回什么类型? (顺便说一句,否决票可能是因为您的问题缺少很多必需的细节,例如我刚刚要求的) -
@Bohemian 现在很酷。
-
真的很难看出你想要达到什么。你想按值对地图的条目进行排序(即你想要一个有序的地图)吗?或者您想对映射到地图中某个键的每个列表的元素进行排序?请澄清并向我们展示详细信息。
-
@FedericoPeraltaSchaffner 对映射到映射中键的每个列表的元素进行排序。