第一种情况:
手册原话是:
在使用 java.util.stream.Collectors 类的 toMap()方法转为 Map 集合时,一定要使用含有参数类型为 BinaryOperator,参数名为 mergeFunction 的方法,否则当出现相同 key 值时会抛出 IllegalStateException 异常。
其中mergeFunction函数就是用于处理key冲突的情况,BinaryOperator<T>接口用于执行lambda表达式并返回一个T类型的返回值。
这句话的通俗解释就是,当存在相同的key时执行toMap方法会报错。可以看下面的实际运行情况:
public class StreamTest {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person(1011,"A"));
personList.add(new Person(1012,"B"));
personList.add(new Person(1013,"C"));
Map<Integer,String> personMap= personList.stream().collect(Collectors.toMap(Person::getId,Person::getName));
System.out.println(personMap);
}
}