我知道int maxLength
会返回列表中最长字的长度,但我认为return arg0.length() - arg1.length();
应返回-1
0
或1
之类的内容。那么这些值如何在最后设置为.length()
int maxLength = Collections.max(lst, new Comparator<String>() { //get length of longest word using Collections.max comparator
@Override
public int compare(String arg0, String arg1) {
return arg0.length() - arg1.length();
}
}).length();
答案 0 :(得分:2)
此
arg0.length() - arg1.length()
将返回一个整数,表示arg0与arg1的比较,如果为0,则在此逻辑比较中两者相等,如果是-x则arg1大于arg1,如果是x,则arg0大于x比arg1
你能解释一下.length()部分吗?如何将1设置为.length()。 - 刚才FatFockFrank
这句话类似于
String longestString = Collections.max(lst, new Comparator<String>() { //get length of longest word using Collections.max comparator
@Override
public int compare(String arg0, String arg1) {
return arg0.length() - arg1.length();
}
});
int maxLength = longestString.length();
答案 1 :(得分:1)
在
return arg0.length() - arg1.length();
如果arg0较长则返回postive,如果长度相等则返回0,如果arg1较长则返回negative。返回值无论是正数还是负数(或零)都无关紧要,因此忽略超出该值的实际值。例如,返回值-50被视为-1。
答案 2 :(得分:1)
比较器提供了比较两个元素的方法。
来自API:
public static T max(Collection coll,Comparator comp)
根据指定比较器引发的顺序返回给定集合的最大元素。集合中的所有元素必须通过指定的比较器相互比较(即comp.compare(e1,e2)不得为集合中的任何元素e1和e2抛出ClassCastException。)
导致字符串(lst
中字符串长度最长)和Collections.max(...).length()
的字符串将返回其长度。