Bag的实现

Bag是一种简单的数据结构,其内部为数组,长度不可变。可以说是对数组的简单封装。EBag实现了Collection接口,具有Collection定义的方法外还具有求交集,并集,差集的功能。

 

------测试方法


package com.woxiaoe.collection.test;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import com.woxiaoe.collection.EBag;

import junit.framework.TestCase;

public class CollectionTest extends TestCase {
	EBag<Integer> eBag = null; 
	List<Integer> l = null;
	@Override
	protected void setUp() throws Exception {
		eBag = new EBag<Integer>(20);
		l = new ArrayList<Integer>();
		eBag.add(1);
		eBag.add(2);
		eBag.add(3);
		eBag.add(4);
		eBag.add(5);
		eBag.add(6);
		eBag.add(7);
		eBag.add(8);
		eBag.add(9);
		eBag.add(10);//添加失败
	
		l.add(11);
		l.add(12);
		l.add(13);
		l.add(14);
		l.add(15);
		eBag.addAll(l);
	}
	public void testEBag() throws Exception{
		Random r = new Random();
		System.out.println("初始值:" + eBag);
		System.out.println(eBag.size());
		for(int i = 0; i <= 10; i++){
			System.out.println("i:" +i + "\t" + eBag.remove(new Integer(i)));
		}
		
		System.out.println("删除1--10后:" + eBag);
		System.out.println("大小:" + eBag.size());
		eBag.removeAll(l);
		System.out.println("删除链表l后:\t" + eBag);
		setUp();
		eBag.retainAll(l);
		System.out.println("重新初始化后,只保留链表中的值" + eBag + "\t size:" + eBag.size());
	}
	public void testEBagUnion(){
		
		EBag<Integer> bag2 = new EBag<Integer>(5);
		bag2.add(2);
		bag2.add(3);
		bag2.add(4);
		bag2.add(5);
		bag2.add(6);
		System.out.println("bag1:" + eBag);
		System.out.println("bag2:" + bag2);
		eBag = eBag.union(eBag, bag2);
		System.out.println("求并集" + eBag);
	}
	public void testEBagintersection(){
		EBag<Integer> bag2 = new EBag<Integer>(5);
		bag2.add(2);
		bag2.add(3);
		bag2.add(4);
		bag2.add(5);
		bag2.add(6);
		System.out.println("bag1:" + eBag);
		System.out.println("bag2:" + bag2);
		System.out.println("求交集" + EBag.intersection(eBag, bag2));
	}
	
	public void testEBagDifference(){
		EBag<Integer> bag2 = new EBag<Integer>(5);
		bag2.add(2);
		bag2.add(3);
		bag2.add(4);
		bag2.add(5);
		bag2.add(6);
		
		System.out.println("bag1:" + eBag);
		System.out.println("bag2:" + bag2);
		System.out.println("求差集" + EBag.difference(eBag, bag2));
	}
	public void testClear(){
		eBag.clear();
		System.out.println("eBag 清空后 \t" + eBag);
		eBag = null;
	}

}

 Output

初始值:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] 15 i:0 false i:1 true i:2 true i:3 true i:4 true i:5 true i:6 true i:7 true i:8 true i:9 true i:10 true 删除1--10后:[11,12,13,14,15] 大小:5 删除链表l后: [] 重新初始化后,只保留链表中的值[11,12,13,14,15] size:5 bag1:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] bag2:[2,3,4,5,6] 求并集[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,2,3,4,5,6] bag1:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] bag2:[2,3,4,5,6] 求交集[2,3,4,5,6] bag1:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] bag2:[2,3,4,5,6] 求差集[1,7,8,9,10,11,12,13,14,15] eBag 清空后 [] null

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值