背景:
在项目中需要使用List集合与另一个List集合进行属性比较,存在符合条件的Bean,便对Bean进行操作,然后返回.
问题:
List集合与List集合比较,存在时间复杂度较高的问题,循环次数较高
解决思路:
将List转化为Map,以便快速查找对应的Bean
可能存在问题:
List转化Map时,选择的Key有可能出现重复,导致Key的重复冲突问题,并造成某些bean缺失
解决方法:
使用bean的两条或多条属性作为为主键
示例代码:
Map<String, Bean> Map = Service.selectAll().stream()
.collect(Collectors.toMap(
bean ->
bean.getFirstType() + bean.getSecondType(),
Function.identity(),
(oldValue, newValue) -> oldValue));
第一个参数作为key
第二参数作为Value, 是将本身作为Map的Value
第三个参数,如果出现了键重复的情况,会使用最后一个值作为Map中的值,而前面的值会被覆盖。这个Lambda表达式中,oldValue表示当前键对应的oldValue值,newValue表示当前键对应的newValue值,函数的返回值就是Map中键对应的新值。
最后:
使用Map.get(xxx),便能快速查找对应的Bean