有人可以解释以下代码行的含义吗?我很难理解比较器部分。我尝试使用谷歌搜索,但所有这些对我来说都是压倒性的。请尽可能简单地解释
List<String> dateStrings = regexTool.getMatches(AppConstants.REGEX_DATETIME, doc.getRawText());
if (!dateStrings.isEmpty()) {
String maxLengthString = Collections.max(dateStrings, Comparator.comparing(s -> s.length()));}
答案 0 :(得分:2)
max
方法返回被视为&#34;最大&#34;的元素。在集合中。
在这种情况下,您有一组字符串。默认情况下,字符串按字母顺序进行比较按字母顺序排序字符串时,顶部的字符串被视为具有较小值的字符串,而底部的字符串则被视为具有较大值的字符串。
然而,在您的问题中编写代码的人不希望以这种方式比较字符串。他/她希望按长度比较字符串。所以一个更长的字符串意味着更大的&#34;字符串。
您可以将第二个参数传递给max
,指定您希望如何比较字符串。由于您希望按长度比较它们,因此您传入:
Comparator.comparing(s -> s.length())
您可能会发现一些有用的有用信息:
答案 1 :(得分:0)
如果你打电话:
String max = Collections.max(dateStrings);
您将使用字符串的自然顺序获取集合中的最大字符串。换句话说,它将是字典顺序中最大的 。因此,如果列表包含&#34; aa&#34;,&#34; bb&#34;,zz&#34;,&#34; cc&#34;,则max将是&#34; zz&#34;。< / p>
您的示例想要检索列表中最长的字符串。因此,您需要提供一个自定义比较器,根据它们的长度比较字符串。