首页 > 解决方案 > 使用 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())工作?

标签: java

解决方案


是的(String a, String b) -> a.length() - b.length()单一抽象方法快捷方式Comparator,并且Comparatorcompare方法必须满足compare(a, b) > 0当且仅当compare(b, a) < 0,否则它不会定义适当的比较函数。b如果您丢弃参数并仅返回int基于的,这样的函数显然无法工作a。如果你想“排序”长度,你可以使用Comparator.comparing(String::length)(见这里)。


推荐阅读