gpt4 book ai didi

java: Arrays.sort() 与 lambda 表达式

转载 作者:太空狗 更新时间:2023-10-29 22:59:10 30 4
gpt4 key购买 nike

我想使用 Arrays.sort 方法按长度对数组 months 中的 String 元素进行排序。有人告诉我here ,可以使用 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()); }
);

关于java: Arrays.sort() 与 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970719/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com