引言
伴随着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