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

概述

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

API

方法摘要

返回值 方法名 说明
boolean add(Object object) (违反)将指定的对象添加到该包中
boolean add(Object object, int nCopies) 将指定数量的对象添加到该包中
boolean containsAll(Collection coll) 判断包中是否含有集合中所有元素
int getCount(Object object) 获得对象在包中的数量
Iterator iterator() 获得包元素迭代器
boolean remove(Object object) 移除包中元素
boolean remove(Object object, int nCopies) 移除指定数量的包中的元素
boolean removeAll(Collection coll) 移除包中包含的集合中的所有元素
boolean retainAll(Collection coll) 删除包中不在集合中的元素
int size() 获得包中元素个数
Set uniqueSet() 获得包中唯一元素集合(去重)

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
{@Testpublic 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
{@Testpublic 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的更多内容,可以去官网查看相关的帮助文档。

commons-collections使用介绍之Bag HashBag相关推荐

  1. Google Guava Collections 使用介绍

    原帖http://www.open-open.com/lib/view/open1325143343733.html 简介: Google Guava Collections 是一个对 Java Co ...

  2. Apache Commons 工具类介绍及简单使用(转)

    转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...

  3. Apache Commons 工具类介绍及简单使用

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于 ...

  4. Apache Commons Collections包和简介

    背景介绍 Apache Commons是Apache软件基金会的项目,曾经隶属于Jakarta项目.Commons的目的是提供可重用的.解决各种实际的通用问题且开源的Java代码.Commons由三部 ...

  5. beanutils工具类_Apache Commons 工具类介绍及简单使用

    来源:http://h5ip.cn/9xu3 Apache Commons 工具类大家都有用过,但是可能缺乏系统学习,只用到了一小部分功能,无法发挥极限的价值,肥朝用大白话说就是,一颗好白菜都让猪给拱 ...

  6. Commons Collections

    Apache Commons Collections - Overview Commons Collections增强了Java Collections Framework.它提供了几个功能,使收集处 ...

  7. yso之Commons Collections

    CommonCollection Gadget主要是由ConstantTransformer,InvokerTransformer,ChainedTransformer构成.gadget主要通过Tra ...

  8. 【web安全】记一次 Commons Collections 新调用链的挖掘

    前言 最近回顾了下之前的关于Commons Collections这块的笔记,从CC1到CC10,从调用链来看,其实都是很相似的.为了巩固下复习的效果,尝试挖掘一条新的调用链,遂出现了本文,大佬轻喷. ...

  9. java multivaluemap_java – 使用自定义值集合类型创建Commons Collections MultiValueMap

    Apache Commons Collections库的4.0版本增加了泛型支持.我无法转换代码以利用它: 我想要一个MultiValueMap,它将String作为键,并将一个字符串集合作为值.但: ...

最新文章

  1. Caused by: java.sql.BatchUpdateException
  2. 如何利用神经网络结合遗传算法进行非线性函数极值寻优(2)
  3. 2020年服务器操作系统占有率,服务器操作系统占有率
  4. collection集合 介绍_五分钟了解MongoDB介绍,安装与使用
  5. explain的用法_这次是真拯救了我,MySQL索引优化,explain讲得非常清楚了
  6. MMO游戏War Riders宣布将于基于区块链的游戏开发公司Immutable集成
  7. 深入理解计算机系统(2.7)------二进制小数和IEEE浮点标准
  8. 你真的把数据库事务搞懂了吗,有图有真相,图文并茂!
  9. 【设计模式】-工厂模式->工厂方法模式(源码与类图解析)
  10. 傅里叶变换 ~ 什么是傅里叶变换?
  11. 直角三角形用计算机怎么做,‎App Store 上的“直角三角形计算器”
  12. exfat默认配置大小_我的空间哪里去了?注意exfat格式设置的陷阱
  13. 数据集Freebase-FB13
  14. 视频播放器三大底层架构
  15. 保存下载图片(taro h5)
  16. 如何在word里面打对勾
  17. Java软件测试工程师之学习进阶路线
  18. 【数据库数据恢复】华为云mysql数据库数据被delete的数据恢复案例
  19. 逻辑思维不强的适合学java嘛_逻辑思维能力的培养很重要吗
  20. 什么是损失函数?什么是梯度

热门文章

  1. 让思维导图改变我们的工作和生活吧
  2. 在Angular4中使用ng2-baidu-map详解
  3. 第十五次发博不知道用什么标题好
  4. 数组的遍历你都会用了,那Promise版本的呢
  5. Fragment使用小技巧
  6. sqoop 数据迁移
  7. http和ftp下载的区别
  8. 【Raspberry pi】系统安装及基础配置
  9. Week2 Teamework from Z.XML 软件分析与用户需求调查(四)Bing桌面及助手的现状与发展...
  10. 大话软件管理之-----yum