List去重
写在前面
需求
将totalList中的某些重复记录移除.(我这里的totalList中存的是对象)
思路
是把需要移除的记录存入removeList, 然后遍历totalList, 如果totalList中的元素在removeList中, 将该元素从totalList中移除.(土了点, 能用...)
由SpringBoot源码get到的去重技能
(见文章底部)
代码
resultList = financeService.selectCaTopupRec(filterMap);//充值记录 // 去除重复ref_no的记录 start== if (resultList != null && !resultList.isEmpty()) { List<String> needRemoveRefNoList = new ArrayList<>(); for (CaTopupRec caTopupRec : resultList) { if (caTopupRec.getTopupAmt().compareTo(BigDecimal.ZERO) < 0) { needRemoveRefNoList.add(caTopupRec.getRefNo()); } } if (!needRemoveRefNoList.isEmpty()) { for (Iterator<CaTopupRec> iterator = resultList.iterator(); iterator.hasNext(); ) { CaTopupRec next = iterator.next(); if (needRemoveRefNoList.contains(next.getRefNo())) { iterator.remove(); } } } } // 去除重复ref_no的记录 end==
List去重黑科技
代码
下面这行代码是看SpringBoot自动配置原理时get到的list去重:
protected final <T> List<T> removeDuplicates(List<T> list) { return new ArrayList(new LinkedHashSet(list)); }
这是利用Set元素唯一的特性,实现了对一个集合进行去重操作,避免使用List的contains方法进行遍历、对比、去重操作。
测试
package com.xgcd.springboot; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest public class RemoveDuplicateTest { @Test public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); list.add("aaa"); for (String str : list) { System.out.println(str); } System.out.println(">>>>>>>>>去重"); LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>(list); ArrayList<String> removeDuplicateList = new ArrayList<>(linkedHashSet); for (String str : removeDuplicateList) { System.out.println(str); } } }
结果
aaa
bbb
ccc
ddd
aaa
>>>>>>>>>去重
aaa
bbb
ccc
ddd
作者:习惯沉淀
如果文中有误或对本文有不同的见解,欢迎在评论区留言。
如果觉得文章对你有帮助,请点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
扫码关注一线码农的学习见闻与思考。
回复"大数据","微服务","架构师","面试总结",获取更多学习资源!