java - 使用 lambda 函数在 Java 中对数组进行排序
问题描述
为什么这个 lambda 函数有效?
String[] months = {"January","February","March","April","May","June","July","August","September","October","December"};
Arrays.sort(months,(String a, String b) -> a.length() - b.length());
为什么它是a.length() - b.length()
,而不仅仅是基于 a.length()?为什么不Arrays.sort(months,(String a) -> a.length())
工作?
解决方案
是的(String a, String b) -> a.length() - b.length()
单一抽象方法快捷方式Comparator
,并且Comparator
的compare
方法必须满足compare(a, b) > 0
当且仅当compare(b, a) < 0
,否则它不会定义适当的比较函数。b
如果您丢弃参数并仅返回int
基于的,这样的函数显然无法工作a
。如果你想“排序”长度,你可以使用Comparator.comparing(String::length)
(见这里)。
推荐阅读
- ruby-on-rails - options_for_select 在 ruby on rails 中按字母顺序排序
- reactjs - 如何使用 index.ts 使模块可发现?
- coldfusion - CFHTTP POST,结果是图像,如何保存
- html - 单击时转换按钮颜色
- python - 字典列表(创建/处理)
- jquery - JQuery 菜单切换按钮
- html - 使用 Excel VBA 将值传递给网站中的文本框
- oracle - 需要了解oracle中的查询
- python - 将无法存储在 GitHub 上的大文件包含在 python 包中的最佳方法
- c++ - LibUSB C++ USB 传输格式不同