您的位置:首页 > 其它

commons-collections使用介绍之Bag

2016-04-05 22:55 525 查看
在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());
}
}


运行结果:

包中元素为:

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());
}
}


运行结果:

包中元素为:

s1

s2

s3

包中元素个数为:3

包中entity1个数为:1

去重后个数为:3


关于Bag的更多内容,可以去官网查看相关的帮助文档。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  collection commons Bag