Java的:Arrays.sort()与拉姆达前pression [英] java: Arrays.sort() with lambda expression
本文介绍了Java的:Arrays.sort()与拉姆达前pression的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要使用 Arrays.sort
法阵月
按长度字符串元素进行排序。有人告诉我, rel=\"nofollow\">,它可能使用拉姆达前pressions,而不是创建新类实现比较。它是否完全相同的方式,但它不能正常工作。
进口java.util.Arrays中;
进口了java.util.Comparator;公共类MainClass {
公共静态无效的主要(字串[] args)
{ 的String []月= {\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"December\"}; 的System.out.println(Arrays.toString(月));前//打印
//没有这个工程:
Arrays.sort(月,
(A,B) - > Integer.signum(则为a.length() - b.length个())
); //和本:
Arrays.sort(月,
(一个字符串,字符串二) - > {返回Integer.signum(则为a.length() - b.length个())};
);
的System.out.println(Arrays.toString(月)); //打印后
}
}
解决方案
最干净的方法是:
Arrays.sort(月,Comparator.comparing(字符串长度::));
或者,用静态导入:
Arrays.sort(月比较(字符串长度::));
然而,这工作太,但更详细的:
Arrays.sort(月,
(一个字符串,字符串二) - >则为a.length() - b.length个());
或较短的:
Arrays.sort(个月,(A,B) - GT;则为a.length() - b.length个());
最后的最后一个:
Arrays.sort(月,
(一个字符串,字符串二) - > {返回Integer.signum(则为a.length() - b.length个())};
);
有;
放错了地方 - 它应该是:
Arrays.sort(月,
(一个字符串,字符串二) - > {返回Integer.signum(则为a.length() - b.length个()); }
);
I want to sort String elements in the array months
by length using Arrays.sort
method. I was told here, that it's possible to use lambda expressions instead of creating new class implementing Comparator. Did it exactly the same way, yet it doesn't work.
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
}
}
解决方案
The cleanest way would be:
Arrays.sort(months, Comparator.comparing(String::length));
or, with a static import:
Arrays.sort(months, comparing(String::length));
However, this would work too but is more verbose:
Arrays.sort(months,
(String a, String b) -> a.length() - b.length());
Or shorter:
Arrays.sort(months, (a, b) -> a.length() - b.length());
Finally your last one:
Arrays.sort(months,
(String a, String b) -> { return Integer.signum(a.length() - b.length()) };
);
has the ;
misplaced - it should be:
Arrays.sort(months,
(String a, String b) -> { return Integer.signum(a.length() - b.length()); }
);
这篇关于Java的:Arrays.sort()与拉姆达前pression的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文