繁体   English   中英

Lambda 表达式 Arrays.sort

[英]Lambda Expressions Arrays.sort

我有一个关于 Java 中的 Arrays.sort 以及它如何与 lambda 表达式一起使用的问题。

Arrays.sort(logs, (log1, log2) -> { 
   ... either returns -1, 0, 1
}

任何人都可以向我解释这个 lambda 表达式在返回值方面是如何工作的?

如果需要更多信息,请告诉我。

编辑:我对比较器有非常基本的了解,如果您也想解释一下,将不胜感激。

Comparator是一个对象,它回答关于给定排序的合适类型的对象对如何相互比较的问题。 它的compare()方法接受两个参数,并报告它们的相对顺序,如果第一个参数在第二个之前排序,则返回 -1,如果第一个在第二个之后排序,则返回 +1,如果两个参数相等,则返回 0。到执行的排序。

这可以以多种方式使用,但特别是,它可用于对此类对象的序列进行排序,使用Comparator代替关系运算符( <> 、 ...),后者不适用于大多数对象的类型。 此外, Comparator允许根据任何选择的顺序对对象进行排序,对于所有实际意图和目的,选择的Comparator实现定义了顺序。 这就是Arrays.sort()使用Comparators ——提供的Comparator充当关系运算符的替代品。

因为Comparator是一个函数式接口,所以可以以 lambda 的形式提供实现。 将 lambda 与Arrays.sort()一起使用并没有什么新的或不同的。 它只是依赖Comparator来定义顺序的Arrays.sort()形式,该Comparator通过 lambda 实现。

基本上这将使用您的 lambda 表达式作为比较器。

比较它的两个参数的顺序。 当第一个参数小于、等于或大于第二个参数时,返回一个负整数、零或正整数。 在前面的描述中,符号sgn(expression)表示数学符号函数,其被定义为根据表达式的值是负、零还是正来返回-1、0或1之一。

有关更多信息,请阅读文档。 https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM