You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Collectors.toMap的mergeFunction参数是否按确定顺序传递?

关于Collectors.toMap合并函数参数顺序的问题解答
  • 结论明确:Collectors.toMap的mergeFunction参数顺序是有保证的——第一个参数是流中先出现的元素,第二个是后出现的元素。
  • 适配你的场景:当你通过Stream.concat(list1.stream(), list2.stream())合并两个列表时,流的遍历顺序严格遵循list1在前、list2在后。遇到重复键时,mergeFunction的第一个参数a必然是list1中的元素,第二个参数b是list2里的重复元素。此时传入(a, b) -> a,完全能实现优先保留第一个列表元素的需求。
  • 依据说明:虽然JDK文档没有直接在mergeFunction的描述里标注参数顺序,但只要源列表是有序集合(比如ArrayList),concat后的流会保持有序性。Collectors.toMap处理有序流时,会严格按照流的遍历顺序传递冲突元素,先出现的元素作为第一个参数传入。

内容的提问来源于stack exchange,提问作者Guerric P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:50:20