值匹配时推荐使用Set的Contains方法
List<Long> searchAttrIds = attrService.selectSearchAttrIds(attrIds);
//转为Set,使用set的contains进行匹配性能更好
Set<Long> idSet = new HashSet<>(searchAttrIds);
List<SkuEsModel.Attrs> attrsList = baseAttrs.stream().filter(item -> {
return idSet.contains(item.getAttrId());
}).map(item -> {
SkuEsModel.Attrs attrs1 = new SkuEsModel.Attrs();
BeanUtils.copyProperties(item, attrs1);
return attrs1;
}).collect(Collectors.toList());
总结:HashSet为哈希表计算索引,而list为链表遍历。
使用contains方法查询元素是否存在HashSet要比ArrayList快的多。

浙公网安备 33010602011771号