在commons-collections中为我们提供了一些关于集合的实现,今天为大家介绍一下Bag相关类的用法。
Bag继承自Collection接口,定义了一个集合,该集合会记录对象在集合中出现的次数。 假设你有一个包,包含{a, a, b, c}。调用getCount(a)方法将返回2,调用uniqueset()方法将返回{a, b, c}。
HashBag使用HashMap作为数据存储,是一个标准的Bag实现。
使用示例:
package com.gujin.collections.bag; import java.util.Iterator; import org.apache.commons.collections.bag.HashBag; import org.junit.Test; public class HashBagBagTest { @Test public void test() { HashBag hashBag = new HashBag(); String s1 = "s1"; String s2 = "s2"; hashBag.add(s1); hashBag.add(s1); hashBag.add(s2, 3); // 获得包中元素迭代器 Iterator<?> iterator = hashBag.iterator(); System.out.println("包中元素为:"); while (iterator.hasNext()) { System.out.println(iterator.next()); } System.out.println("包中元素个数为:" + hashBag.size()); System.out.println("包中entity1个数为:" + hashBag.getCount(s1)); System.out.println("去重后个数为:" + hashBag.uniqueSet().size()); } } 123456789101112131415161718192021222324252627282930 123456789101112131415161718192021222324252627282930运行结果: 包中元素为: s1 s1 s2 s2 s2 包中元素个数为:5 包中entity1个数为:2 去重后个数为:2
TreeBag使用TreeMap作为数据存储,用法与HashBag类似,只是TreeBag会使用自然顺序对元素进行排序。
使用示例:
package com.gujin.collections.bag; import java.util.Iterator; import org.apache.commons.collections.bag.TreeBag; import org.junit.Test; public class TreeBagBagTest { @Test public void test() { TreeBag hashBag = new TreeBag(); String s1 = "s1"; String s2 = "s2"; String s3 = "s3"; hashBag.add(s3); hashBag.add(s1); hashBag.add(s2); // 获得包中元素迭代器 Iterator<?> iterator = hashBag.iterator(); System.out.println("包中元素为:"); while (iterator.hasNext()) { System.out.println(iterator.next()); } System.out.println("包中元素个数为:" + hashBag.size()); System.out.println("包中entity1个数为:" + hashBag.getCount(s1)); System.out.println("去重后个数为:" + hashBag.uniqueSet().size()); } } 12345678910111213141516171819202122232425262728293031 12345678910111213141516171819202122232425262728293031运行结果:
包中元素为: s1 s2 s3 包中元素个数为:3 包中entity1个数为:1 去重后个数为:3
关于Bag的更多内容,可以去官网查看相关的帮助文档。