多个属性对List去重"/>
根据一个或多个属性对List去重
示例代码
@Test
public void test01() {List<CodeTemplateDO> list = new ArrayList<>();CodeTemplateDO codeTemplateDO01 = new CodeTemplateDO();codeTemplateDO01.setRemark("备注01");codeTemplateDO01.setDelFlag(NumberUtils.BYTE_ZERO);list.add(codeTemplateDO01);CodeTemplateDO codeTemplateDO02 = new CodeTemplateDO();codeTemplateDO02.setRemark("备注01");codeTemplateDO02.setDelFlag(NumberUtils.BYTE_ZERO);list.add(codeTemplateDO02);System.out.println("去重前:");System.out.println("list是:" + JSONUtil.toJsonStr(list));// 按属性去重(仅仅支持一个属性)//list = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparatorparing(CodeTemplateDO::getRemark))), ArrayList::new));// 按属性去重(支持多个属性)list = CollUtil.distinct(list, e -> StrUtil.format("{}_{}", e.getRemark(), e.getDelFlag()), true);System.out.println("去重后:");System.out.println("list是:" + JSONUtil.toJsonStr(list));}
代码说明
- CollUtil.distinct方法来源于cn.hutool.core.collection.CollUtil#distinct(java.util.Collection, java.util.function.Function<T,K>, boolean),具体可参考该工具类方法的说明。
- StrUtil.format方法来源于cn.hutool.core.text.CharSequenceUtil#format,此方法简单将占位符{}按照顺序替换为参数。
更多推荐
根据一个或多个属性对List去重
发布评论