JAVA8 lambda表达式中Collectors.toMap()方法
.collect(Collectors.toMap(Option::getId, option -> option, (v1, v2) -> v1));
第一个参数Option::getId 表示选择Option的getId作为map的key值;
第二个参数option -> option表示选择将原来的对象作为map的value值;
第三个参数(v1, v2) -> v1中,如果v1与v2的key值相同,选择v1作为那个key所对应的value值
实际应用中可以只使用前两个参数,例如:
Map<Long, Option> otionMap = options.stream().collect(Collectors.toMap(Option::getId, option -> option));
这种情况下往map里面put一个已经存在的key,会抛异常!!!
为了避免这种情况,最好还是加上第三个参数:
Map<Long, Option> otionMap = options.stream().collect(Collectors.toMap(Option::getId, option -> option),(oldValue, newValue) -> newValue));
这时往map里面put一个已经存在的key就会使用新的value替换原有value。