簡體   English   中英

理解 Collections.max 中的比較器

[英]understanding comparator in Collections.max

有人可以解釋以下代碼行的含義嗎? 我很難理解 Comparator 部分。我嘗試使用谷歌搜索,但所有這些都太復雜了,我無法理解。 有人可以用更簡單的方式解釋一下嗎?

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

max方法返回被認為是集合中“最大”的元素。

在這種情況下,您有一個字符串集合。 默認情況下,字符串按字母順序進行比較。 當您按字母順序排列字符串時,頂部的字符串被視為具有較小值的字符串,而底部的字符串則被視為具有較大值的字符串。

但是,在您的問題中編寫代碼的人不想以這種方式比較字符串。 他/她想按長度比較字符串。 因此,更長的字符串將意味着“更大”的字符串。

您可以將第二個參數傳遞給max指定您希望如何比較字符串。 由於您想按長度比較它們,因此您傳入:

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

一些你可能會覺得有用的有用的東西:

如果你打電話:

String max = Collections.max(dateStrings);

您將使用字符串的自然順序獲得集合中的最大字符串。 換句話說,它將是字典序中最大的。 因此,如果列表包含“aa”、“bb”、zz”、“cc”,則最大值將為“zz”。

您的示例想要檢索列表中最長的字符串。 因此,您需要提供一個自定義比較器,它會根據字符串的長度來比較字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM