pin*_*x10 2 java list lexicographic-ordering
我有一个 Java ArrayList,列表中的每个元素都是一个具有 3 个字段(a、b 和 c)的对象。我应该按升序排列;如果 2 个元素的 a 值相同,则应按 b 降序排列它们;最后,如果 2 个元素即使对于 b 也具有相同的值,则它们应该按 c 升序排列。
我尝试了 stackoverflow 上发布的基于 Comparator 的其他解决方案,但我没有按降序排列。
有人可以帮助我吗?非常感谢!
Comparator<Element> compar = Comparator.comparing(Element::getA)
.thenComparing(Comparator.comparing(Element::getB).reversed())
.thenComparing(Element::getC);
yourArrayList.sort(compar);
Run Code Online (Sandbox Code Playgroud)
除了该方法之外,我还利用了重载的reversed事实:一个方法采用 a作为参数,我们需要将其反转,另一个方法仅采用方法引用(或 lambda)作为参数(在 的声明中)。thenComparing()thenComparing()ComparatorFunctionthenComparing()
如果a,b 或c是原语int, longordouble请记住使用comparingInt(), comparingLong(), comparingDouble(),thenComparingInt()等。
| 归档时间: |
|
| 查看次数: |
3345 次 |
| 最近记录: |