第五十七篇:commons-collections使用介绍之Bag

来源:互联网 发布:2017最新车主一手数据 编辑:程序博客网 时间:2024/06/04 19:57

在commons-collections中为我们提供了一些关于集合的实现,今天为大家介绍一下Bag相关类的用法。

概述

Bag继承自Collection接口,定义了一个集合,该集合会记录对象在集合中出现的次数。 
假设你有一个包,包含{a, a, b, c}。调用getCount(a)方法将返回2,调用uniqueset()方法将返回{a, b, c}。

API

方法摘要

返回值方法名说明booleanadd(Object object)(违反)将指定的对象添加到该包中booleanadd(Object object, int nCopies)将指定数量的对象添加到该包中booleancontainsAll(Collection coll)判断包中是否含有集合中所有元素intgetCount(Object object)获得对象在包中的数量Iteratoriterator()获得包元素迭代器booleanremove(Object object)移除包中元素booleanremove(Object object, int nCopies)移除指定数量的包中的元素booleanremoveAll(Collection coll)移除包中包含的集合中的所有元素booleanretainAll(Collection coll)删除包中不在集合中的元素intsize()获得包中元素个数SetuniqueSet()获得包中唯一元素集合(去重)

HashBag

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());   }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

运行结果: 
包中元素为: 
s1 
s1 
s2 
s2 
s2 
包中元素个数为:5 
包中entity1个数为:2 
去重后个数为:2

TreeBag

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());   }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

运行结果:

包中元素为: 
s1 
s2 
s3 
包中元素个数为:3 
包中entity1个数为:1 
去重后个数为:3

关于Bag的更多内容,可以去官网查看相关的帮助文档。

阅读全文
0 0