Stream 的 max 函數可以方便地識別流中的最大值。然而,它遵循“先到先得”的原則,如果存在平局,可能會忽略其他最大值。為了解決此限制並檢索所有最大值,需要替代方法。
對於輸入集合,可以採用兩遍方法:
此解可容納多個最大值,但會產生對整個輸入進行兩次迭代的成本。
當輸入是流中,可以使用單通道收集器:
此收集器維護以下不變式:等價,根據需要新增或刪除元素。合併列表時,它會考慮每個列表中的最大元素,並在相等時將它們合併。
透過將此收集器與流結合,可以在一次傳遞中獲得所有最大值。
雖然 Java 流中的 max 有其局限性,但可以利用替代解決方案來克服它們。兩遍解決方案對於收集來說是高效的,而單遍收集器對於流來說非常有用,允許檢索所有最大值。
以上是如何從 Java 流中檢索所有最大值並有效處理關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!