Collectors.toMap 的正确使用方式

引言

伴随着Java8的普及(有些小伙伴可能已经在玩Java17了,当然这不是重点),它为我引入了流式编程,由于本人在早些时候接触过Scala的函数式编程,所以非常喜欢一路点点的操作。

这不今天的Bug就这样产生了, 背景是因为本人在编程中多少有些代码洁癖,而且公司现在引入了一套代码质量评测平台,这样就不得不对已有的代码进行重构。经过本人一段时间的奋斗终于将2k+的code smell 降到了100以内, 项目的代码质量也在所属团队处于前列,一度使得我还得意了一阵子。好了闲话不说了, 接下来我们直接进入正题好了。

Bug 引入

在代码优化中, 我将已有的生成Map的操作改成了一下的样子。

import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.junit.jupiter.api.Test;

public class CollectorsToMapTest {

	@Test
	void test_toMap() {
		// 模拟制造重复数据
		List<Employee> employees = Stream.of(Employee.create("zhangsan", 18), Employee.create("zhangsan", 18))
				.collect(Collectors.toList());
		
		Map<String, Employee> employeeMap = employees.stream().collect(Collectors.toMap(Employee::getName, Function.identity()));
		System.out.println(employeeMap);
	}

	private static class Employee {
		private 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值