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