首页 > 解决方案 > Lambda 表达式 Arrays.sort

问题描述

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

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

谁能向我解释这个 lambda 表达式对于返回值是如何工作的?

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

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

标签: javasortinglambda

解决方案


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

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

因为Comparator是函数式接口,所以可以以 lambdas 的形式提供实现。将 lambda 与Arrays.sort(). 它只是Arrays.sort()依赖于Comparator定义顺序的形式,Comparator通过 lambda 实现。


推荐阅读