在Java中,将String :: length用作Comparator.comparing() [英] in java, use String::length for Comparator.comparing()
问题描述
我有一个这样的代码段:
I have a code piece like this:
String[] yetToSortedArray = {"Abc","hello world","nihao?","chilemaNin"};
Arrays.parallelSort(yetToSortedArray, Comparator.comparing(String::length));
for(String str : yetToSortedArray){
System.out.println(str + ", ");
}
我的问题在这里:字符串::长度" 我真正传递给Comparator.comparing()的是什么? 为什么String :: length()没有括号?
My question is here: "String::length" What am I really passing in to Comparator.comparing()? Why there is no parenthesis for String::length()?
I think I am using this : https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html#comparing-java.util.function.Function-java.util.Comparator-
它说:接受一个从类型T中提取一个Comparable排序键,然后返回一个通过该排序键进行比较的Comparator的函数."
And it says "Accepts a function that extracts a Comparable sort key from a type T, and returns a Comparator that compares by that sort key."
String :: length如何匹配此类型?
How dos String::length match this type?
谢谢.
推荐答案
String::length
是 方法参考 .使用它等同于
String::length
is a method reference. Using it is equivalent to
Comparator.comparing(s -> s.length())
因此它通过比较字符串的长度来比较字符串.
So it compares strings by comparing their length.
这篇关于在Java中,将String :: length用作Comparator.comparing()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!