[英]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.