实际应用场景:从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 }
输出结果如下: