利用Bag中的getCount()方法统计list集合中重复元素

实际应用场景:从Excel导入数据时,存在某个标识符相同的多条数据,需要进行合并,因此需要统计重复元素,可以利用Bag包下的getCount()进行统计,代码如下:

复制代码
  1 package test.com.dflzm.tpme.szjh;
  2 
  3 import java.util.ArrayList;
  4 import java.util.HashSet;
  5 import java.util.Iterator;
  6 import java.util.List;
  7 import java.util.Set;
  8 
  9 import org.apache.commons.collections.Bag;
 10 import org.apache.commons.collections.HashBag;
 11 import org.junit.Test;
 12 
 13 /**  
 14  * Description
 15  * @author fanj  
 16  * @version 1.0   
 17  * 2019年10月24日 上午11:29:14 
 18  */
 19 public class ListToSetTest {
 20     
 21     /**
 22      * 
 23      * @Description list中元素个数统计
 24      * @author fanj
 25      * @date 2019年10月24日
 26      */
 27     @Test
 28     public void test() {
 29         // 初始化list
 30         List<String> list = setUpList();
 31         // list转set
 32         Set set = new HashSet(list);
 33         System.out.println("set:" + set);
 34         // 判断list中是否有重复的元素
 35         if (list.size() != set.size()) {
 36             System.out.println("list中存在重复元素");
 37             // 统计list中重复元素及其个数
 38             countEqualElement(list);
 39         }
 40         
 41     }
 42     
 43     /**
 44      * 
 45      * @Description 统计list中重复元素个数
 46      * @author fanj
 47      * @date 2019年10月24日
 48      * @param list
 49      */
 50     private void countEqualElement(List<String> list) {
 51         Bag bag = new HashBag(list);
 52         // 相同元素集合
 53         Set<String> equalElesSet = new HashSet<String>();
 54         // 相同元素
 55         String equalElement = "";
 56         for (int i = 0; i < list.size(); i++) {
 57             equalElement = list.get(i);
 58             // 利用hashBag的getCount()方法进行统计重复元素个数
 59             int count = bag.getCount(equalElement);
 60             if (count > 1) {
 61                 // 保存重复元素
 62                 equalElesSet.add(equalElement);
 63             }
 64         }
 65         if (equalElesSet.size() > 0) {
 66             // 相同元素个数
 67             int length = equalElesSet.size();
 68             System.out.println("重复元素组数:" + length);
 69             // 输出相同元素
 70             Iterator<String> it = equalElesSet.iterator();
 71             int count = 1;
 72             while (it.hasNext()) {
 73                 String next = it.next();
 74                 System.out.println("第" + count + "个重复元素:" + next);
 75                 count++;
 76             }
 77         }
 78     }
 79     
 80     /**
 81      * 
 82      * @Description 初始化list
 83      * @author fanj
 84      * @date 2019年10月24日
 85      * @return
 86      */
 87     private List<String> setUpList() {
 88         // 创建集合
 89         List<String> list = new ArrayList<String>();
 90         // 添加元素
 91         list.add("1109Z2");
 92         list.add("X03006-1004111B");
 93         list.add("13MA-11011");
 94         list.add("1109Z2");
 95         list.add("X03006-1004111B");
 96         System.out.println("list:" + list);
 97         return list;
 98     }
 99     
100 }
复制代码

输出结果如下:

 

posted @   AlphaJunS  阅读(804)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示