Sorting 流排序,基于反向绝对值,实现Comparator或ToIntFunction,Java 8

Sorting 流排序,基于反向绝对值,实现Comparator或ToIntFunction,Java 8,sorting,java-8,java-stream,comparator,Sorting,Java 8,Java Stream,Comparator,我在和你一起整理 someList.sorted(Comparator.comparingInt(someClass::getValue).reversed()) 现在,我需要按绝对值排序,如下面的答案:(不使用Math.abs(x)或Math.sqrt(Math.pow(x,2))) 如何实现新的java.util.Comparator或java.util.function.ToIntFunction以绝对值的相反顺序执行?检查以下内容: 或者 someList .sorted(Compar

我在和你一起整理

someList.sorted(Comparator.comparingInt(someClass::getValue).reversed())
现在,我需要按绝对值排序,如下面的答案:(不使用
Math.abs(x)
Math.sqrt(Math.pow(x,2))

如何实现新的
java.util.Comparator
java.util.function.ToIntFunction
以绝对值的相反顺序执行?

检查以下内容:

或者

someList
.sorted(Comparator.<SomeClass>comparingInt(s -> Math.abs(s.getValue())).reversed())
someList
.sorted(Comparator.comparingit(s->Math.abs(s.getValue())).reversed())

为什么不使用abs?直接的解决方案是
someList.sorted(Comparator.comparingit(v->Math.abs(v.getValue()).reversed())
,但如果您坚持不使用
abs
,则只需使用
someList.sorted(Comparator.comparingit(v->v.getValue()<0?-v.getValue():v.getValue()).reversed())在和此处实现abs的相同方法
someList
.sorted((a, b) ->
    Integer.valueOf(Math.abs(b.getValue()))
    .compareTo(Math.abs(a.getValue()))
)
someList
.sorted(Comparator.<SomeClass>comparingInt(s -> Math.abs(s.getValue())).reversed())