List转Map-JDK8实现
1.List转Map
class A
方式一:
Map<String, A> aMap = aList.stream().collect(Collectors.toMap(A::getId, a -> a));
也可以使用Function接口中的一个默认方法 Function.identity(),这个方法返回自身对象
方式二:
Map<String, A> aMap = aList.stream().collect(Collectors.toMap(A::getId, Function.identity()));
扩展:
在list转为map时,作为key的值有可能重复,这时候流的处理会抛出个异常:Java.lang.IllegalStateException:Duplicate key。这时候就要在toMap方法中指定当key冲突时key的选择。(这里是选择第二个key覆盖第一个key)
Map<String, a> aMap = aList.stream().collect(Collectors.toMap(a::getId, a -> a,(key1, key2)->key2));