• 利用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 }

    输出结果如下:

  • 相关阅读:
    搭建 mariadb 数据库主从同步
    MySQL--MVCC
    剑指 Offer 07. 重建二叉树
    剑指 Offer 06. 从尾到头打印链表
    MySQL--数据库范式
    剑指 Offer 05. 替换空格
    剑指 Offer 04. 二维数组中的查找
    剑指offer_03_数组中重复的数字(Java)
    Redis
    MySQL--SQL执行过程
  • 原文地址:https://www.cnblogs.com/alphajuns/p/11731874.html
Copyright © 2020-2023  润新知