commons-collections使用介绍之Bag-阿里云开发者社区

开发者社区> 蒋固金> 正文

commons-collections使用介绍之Bag

简介:
+关注继续查看

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android Studio 通过一个登录功能介绍SQLite数据库的使用
前言:         SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
4226 0
Spring AOP 使用介绍,从前世到今生
原文出处:https://javadoop.com/post/spring-aop-intro 前面写过 Spring IOC 的源码分析,很多读者希望可以出一个 Spring AOP 的源码分析,不过 Spring AOP 的源码还是比较多的,写出来不免篇幅会大些。
994 0
CV之face_recognition:Py之face_recognition库安装、介绍、使用方法详细攻略
CV之face_recognition:Py之face_recognition库安装、介绍、使用方法详细攻略
17 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12034 0
《阿里巴巴Java开发规约》插件使用介绍
一、简介     阿里巴巴于10月14日在杭州云栖大会上,正式发布了《阿里巴巴Java开发规约》扫描插件!该插件基于《阿里巴巴Java开发规约》手册内容,在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。
2186 0
Redis介绍使用及进阶
Redis介绍使用及进阶目录: 一、介绍 二、缓存问题 三、Redis内存滥用 四、键命名规范 五、Redis使用场景 六、持久化操作 七、.Net Core 使用redis 简单介绍 一、介绍 1、 高性能-- Redis能读的速度是110000次/s,写的速度是81000次/s 、c语言实现距...
1007 0
+关注
115
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载