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

目录
相关文章
|
3月前
|
Java 索引
常用工具类-Arrays
本文介绍了Java工具类Arrays和Arrays.ArrayList的常用功能,包括数组的打印、创建、比较、排序、检索以及转换为List的方法,以及setAll和parallelSetAll的使用,展示了如何通过这些工具类便捷地操作数组。
常用工具类-Arrays
|
3月前
|
Java
常用工具类-Collections
本文介绍了Java中Collections工具类的功能和用法,包括对集合进行排序、查找、填充操作,判断集合是否有交集,以及创建不可变集合的方法。通过示例代码展示了如何使用Collections类提供的静态方法,如reverse、shuffle、sort、swap、binarySearch、max、min、fill、frequency、disjoint、emptyList等,突出了Collections类在操作集合时的便利性和实用性。
常用工具类-Collections
|
6月前
commons-collections常用工具类
commons-collections常用工具类
60 0
|
Java API
Why Java Collections Framework does not contain Tree and Graph
Why Java Collections Framework does not contain Tree and Graph
72 0
|
JSON 前端开发 Java
已解决:com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Direct self-reference leading to
已解决:com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Direct self-reference leading to
300 0
已解决:com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Direct self-reference leading to
Java:org.apache.commons.collections4.MapUtils获取Map数据
Java:org.apache.commons.collections4.MapUtils获取Map数据
252 0
|
存储 算法 Java
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)(上)
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)(上)
|
Java API Apache
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)(下)
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)(下)
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)(下)
|
存储 算法 Java
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)(中)
【小家java】Java之Apache Commons-Collections4使用精讲(Bag、Map、List、Set全覆盖)(中)
|
前端开发 Java 数据库连接