值匹配时推荐使用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快的多。

posted @ 2022-04-21 10:31  星期三q  阅读(492)  评论(0)    收藏  举报