ref:https://www.cnblogs.com/exmyth/p/11012873.html
将List收集为Map:Collectors.toMap()
1.1 key和value都为集合元素的字段。
Map<Integer, Long> dbIndexDbIdMap=cluster.getDmDatabaseEntity()
.stream()
.collect(Collectors.toMap(DmDatabaseEntity::getDbIndex, DmDatabaseEntity::getId));
【注意】:上面的写法需保证key不重复,若key重复,会报错。
1.2 key为集合元素中的字段,value为元素对象本身。
若key重复,这时候就要在toMap方法中指定当key冲突时,应该怎么进行处理。((v1, v2) -> v2)
的意思就是,如果存在重复的,永远取后面一个)
Map<String, Disk> map = disks.stream()
.collect(Collectors.toMap(Disk::getSlot, Function.identity(), (v1, v2) -> v2));
或
Map<String, Disk> map = disks.stream()
.collect(Collectors.toMap(Disk::getSlot, s->s, (v1, v2) -> v2));
1.3 按照某一个字段,对List元素进行分组:Collectors.groupingBy()
value为集合
Map<Integer, List<FindDatabaseInfoBO>> dbIndexDbMap = allDatabaseInfoBOList
.stream()
.collect(Collectors.groupingBy(FindDatabaseInfoBO::getDbIndex));