java集合之位集的使用

使用位集来解决涉及标志位的事情要比使用boolean类的对象效率高,而且有已经实现的类库方法可以调用。

假如现在要设计一个小系统,来记录和统计动物园中动物的种类,可以增加和删除某种动物,也可以查询动物园中有哪几种动物。实现的代码如下:

注:为了实现代码的模块化测试,在类中添加了一个main函数,这个函数并不会影响类的正常使用。

public class BitSetTest {

	private BitSet bitset = new BitSet(80);
	

	/**
	 * 查询动物园中是否存在某种动物
	 * */
	public boolean getAnimal(int bitIndex) {
		return bitset.get(bitIndex);
	}
	    
    /**
     * 查询动物园中动物的种类数
     * */
	public int getLength() {
		int i =0 ;
		int k ;
		int j = getLogicLength();
		for( k=0 ;k < j; k++)
		{
			if(bitset.get(k))
				i++;
		}
		return i;
		
	}
	
	
	
	private int getLogicLength() {
		/*返回的不是想要的,这个函数返回的是位集的逻辑长度*/
		return bitset.length();
	}
	
	/**
	 *如果将枚举定义在调用程序的地方,就可以固定使用某一位来表示动物园中是否有这种小动物,哈哈
	 * */
	public void addAnimal(int bitIndex) {
		bitset.set(bitIndex);
	}
	
	/**
	 *将某种动物移出动物园
	 * */
	public void clearAnimal(int bitIndex) {
		bitset.clear(bitIndex);	
	}
	/**
	 * 模块测试函数
	 * */

    public static final int Tigger =0;
	
    public static final int Mouse =1;

    public static final int Cat=2;

    public static final int Dog=3;

    public static final int Fox=4;

    public static final int Horse=5;

    public static final int Ox=6;

    public static final int Pig=7;
    
	public static void main(String[] args) { 

		
		BitSetTest AnimalStat = new BitSetTest();
		AnimalStat.addAnimal(Pig);
		AnimalStat.addAnimal(Ox);
		AnimalStat.addAnimal(Horse);
		if(AnimalStat.getAnimal(Pig))
			System.out.println("hava pig");
		if(AnimalStat.getAnimal(Horse))
			System.out.println("hava horse");
		System.out.println("动物园中动物种类数:");
		System.out.print(AnimalStat.getLength());
	}
	
}

运行结果:

hava pig
hava horse
动物园中动物种类数:
3

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值