[英]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.