了解 Collections.max 中的比较器

understanding comparator in Collections.max

谁能解释一下下面几行代码是什么意思?。我很难理解比较器 part.I 尝试谷歌搜索,但所有这些都太复杂了,我无法理解。有人可以用更简单的方式解释一下吗?

String maxLengthString = Collections.max(dateStrings, Comparator.comparing(s -> s.length()));

如果您致电:

String max = Collections.max(dateStrings);

您将使用字符串的自然顺序获取集合中最大的字符串。换句话说,它将是最大的字典顺序。因此,如果列表包含 "aa"、"bb"、zz"、"cc",最大值将为 "zz"。

您的示例想要检索列表中最长的字符串。所以你需要提供一个自定义比较器,它将根据字符串的长度来比较字符串。

max 方法 returns 被认为是集合中 "biggest" 的元素。

在本例中,您有一个字符串集合。默认情况下,字符串按字母顺序进行比较。当您按字母顺序排列字符串时,顶部的字符串被视为具有较小值的字符串,而底部的字符串被视为具有较大值的字符串。

但是,无论是谁编写了您问题中的代码,都不想以这种方式比较字符串。 He/she 想按长度比较字符串。所以更长的字符串将意味着 "bigger" 字符串。

您可以将第二个参数传递给 max,指定您希望如何比较字符串。既然要按长度比较,就传入:

Comparator.comparing(s -> s.length())

一些您可能会觉得有用的东西: