java - Lambda 表达式 Arrays.sort
问题描述
我有一个关于 Java 中的 Arrays.sort 以及它如何与 lambda 表达式一起使用的问题。
Arrays.sort(logs, (log1, log2) -> {
... either returns -1, 0, 1
}
谁能向我解释这个 lambda 表达式对于返回值是如何工作的?
如果需要更多信息,请告诉我。
编辑:我对比较器有一个非常基本的了解,如果您也想解释这一点,将不胜感激。
解决方案
AComparator
是一个对象,它回答了合适类型的对象对如何根据给定的顺序相互比较的问题。它的compare()
方法接受两个参数,并报告它们的相对顺序,如果第一个参数在第二个之前排序,则返回 -1,如果第一个参数在第二个之后排序,则返回 +1,或者如果两者相等,则返回 0。实施的。
这可以以多种方式使用,但特别是,它可用于对此类对象的序列进行排序,Comparator
使用 代替关系运算符(<
, >
, ...),这不适用于大多数类型的对象. 此外,Comparator
s 允许根据任何选择的顺序对对象进行排序,因为对于所有实际意图和目的,所选Comparator
实现定义了顺序。这就是Arrays.sort()
使用Comparators
的方式——Comparator
提供的作为关系运算符的替代品。
因为Comparator
是函数式接口,所以可以以 lambdas 的形式提供实现。将 lambda 与Arrays.sort()
. 它只是Arrays.sort()
依赖于Comparator
定义顺序的形式,Comparator
通过 lambda 实现。
推荐阅读
- r - 在 R 列的子集中替换字符串的问题
- java - 自定义注解可以抛出自定义异常,而不是 MethodArgumentNotValidException?
- html - Angular:数据未显示在 UI 中
- docker - '@io_bazel_rules_docker//toolchains/docker':无法加载文件'@bazel_skylib//:bzl_library.bzl':文件不存在
- python-3.x - Python3 StringIO 没有克隆
- java - Spring Boot、JPA 和 MySQL 8 方言错误
- python - Python:网站的类打印出一个空列表
- pouchdb - 多个 Pouchdb 不与 couchdb 同步
- excel - 运行引用 excel 单元格作为参数的 excel 函数,但此函数仅应在行或列更改而不是值时运行
- java - 即使重新启动后也会在后台自动运行多个 jar 文件