在Java中,使用Stream将List转换为Map时,若未明确指定冲突处理策略,重复的Key会导致异常。但通过Collectors.toMap()的第三个参数(合并函数)可实现重复Key的覆盖或保留现有值。
重复Key的处理方式
当Key重复时,可通过合并函数指定保留新值((existing, replacement) -> replacement)或保留现有值((existing, replacement) -> existing)
List<User> users = new ArrayList<>();
users.add(new User("11", 1));
users.add(new User("11", 2));
Map<String, User> userMap = users.stream()
.collect(Collectors.toMap(User::getName, Function.identity(), (existing, replacement) -> existing));
此代码中,重复的Key "11"会保留第一个添加的值。
常见应用场景
保留最新数据:当业务场景需要更新旧数据时,可使用replacement覆盖现有值。
避免数据丢失:若需保留原始数据,则选择保留现有值(existing)
3163

被折叠的 条评论
为什么被折叠?



