java:带有lambda表达式的Arrays.sort()
我想使用Arrays.sort
方法按长度对数组中的String元素进行Arrays.sort
。 我在这里被告知,可以使用lambda表达式而不是创建实现Comparator的新类。 它是否完全相同,但它不起作用。
import java.util.Arrays; import java.util.Comparator; public class MainClass { public static void main(String[] args) { String[] months = {"January","February","March","April","May","June","July","August","September","October","December"}; System.out.println(Arrays.toString(months)); //printing before //neither this works: Arrays.sort(months, (a, b) -> Integer.signum(a.length() - b.length()) ); //nor this: Arrays.sort(months, (String a, String b) -> { return Integer.signum(a.length() - b.length()) }; ); System.out.println(Arrays.toString(months)); //printing after } }
最干净的方式是:
Arrays.sort(months, Comparator.comparingInt(String::length));
或者,使用静态导入:
Arrays.sort(months, comparingInt(String::length));
但是,这也可行,但更详细:
Arrays.sort(months, (String a, String b) -> a.length() - b.length());
或更短:
Arrays.sort(months, (a, b) -> a.length() - b.length());
最后你的最后一个:
Arrays.sort(months, (String a, String b) -> { return Integer.signum(a.length() - b.length()) }; );
有;
错位 – 它应该是:
Arrays.sort(months, (String a, String b) -> { return Integer.signum(a.length() - b.length()); } );
你在找这个:
Arrays.sort(months, (a, b) -> Integer.signum(a.length() - b.length()));
您正在寻找的function是Java 8,尚未发布。 如果您想等待,或者如果没有可用的beta下载,它计划在几个月内发布。
- Java8,HttpClient,收到“收到致命警报:handshake_failure”
- EasyMock void方法
- NoSuchMethodError:org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg / springframework / core / env / Environment; 随着zkoss
- JFreeChart Polar chart填充零点
- 通过JSch执行shell命令时随机获取空输出
- Apache Camel:带有CxfEndpoint的RouteBuilder
- 使用Java读取文件或流的最强大方法(防止DoS攻击)
- 在Java中读取一行csv文件
- Jar Embedded Resources NullPointerException