数组有限并且连续;

实现动态数组:可以变更数组长度,可以调整数组的大小:

//动态对象数组public class DynamicArray {    	final static int defaultSize=10;	Object[] arr; //对象数组	int maxSize; //数组的最大长度		//默认的构造方法	public DynamicArray()	{	   init(defaultSize);		}		//指定对象数组长度的构造方法	public DynamicArray(int size)throws Exception	{		if(size<=0)		{			throw new Exception("数组长度参数异常!");		}		init(size);	}		//根据已有对象数组,拷贝复制生成新的对象数组	public DynamicArray(DynamicArray a)	{	   arr = new Object[a.maxSize];	   for(int i=0;i
 maxSize)? maxSize:size; for(int i=0;i

向量类:

Vector类,MyVector类的实现,里面用到了system中的arraycopy方法。

//这个方法可以对data数组进行前后一位推移,自己复制自己		System.arraycopy(data, index, data, index+1, count-index);		System.arraycopy(data, index+1, data, index, j);
public interface Collection {  	//在指定位置添加	public void add(int index,Object element) throws Exception;	//在集合末端添加	public void add(Object element) throws Exception;	//在指定位置设置元素	public void set(int index,Object element) throws Exception;    //获得指定位置的元素	public Object get(int index) throws Exception;	//获得集合大小	public int size();	//在指定位置删除	public void remove(int index) throws Exception;	//删除指定对象	public void remove(Object element) throws Exception;	//是否包含指定对象	public boolean contain(Object element) throws Exception;		}//用户自定义的Vector类public class MyVector implements Collection{            //data.length和count不同,前者是数组开辟空间大小,后者是数组中存了多少东西	private Object[] data; //集合对象数组	private int count;  //集合大小	private final static int defaultSize=10;		public MyVector()	{	   init(defaultSize);				}		public MyVector(int size)	{		init(size);	}		public void init(int size)	{		data = new Object[size];		count=0;	}		//动态扩充内存        //这个方法是确保类中的空间足够大,判断空间是否够        //minCapacity是指需要的最小空间	private void ensureCapacity(int minCapacity)	{                //是看data的空间		int oldCapacity = data.length;		if(minCapacity>oldCapacity)		{			Object[] oldData = data;			int newCapacity = oldCapacity*2;			if(newCapacity
=count+1) { throw new ArrayIndexOutOfBoundsException(index); } ensureCapacity(count+1);                //这个方法可以对data数组进行后一位推移,自己复制自己 System.arraycopy(data, index, data, index+1, count-index); data[index]=element; count++; } @Override public void add(Object element) throws Exception { // TODO Auto-generated method stub                ensureCapacity(count+1); add(count,element); } @Override public boolean contain(Object element) throws Exception { // TODO Auto-generated method stub //可用index去下标,完成查找 return indexOf(element)>=0; } @Override public Object get(int index) throws Exception { // TODO Auto-generated method stub if(index>=count||index<0) {   throw new ArrayIndexOutOfBoundsException(index); } return data[index]; } @Override public void remove(int index) throws Exception { // TODO Auto-generated method stub if(index>=count||index<0) {   throw new ArrayIndexOutOfBoundsException(index); } int j=count-index-1; if(j>0) { System.arraycopy(data, index+1, data, index, j); } count--;                //把最后的一位弄成null去掉,因为前移了 data[count]=null; }        //找到元素的下标 public int indexOf(Object element) {         //循环找相同元素 if(element==null) { for(int i=0;i
=0) { remove(index); } } @Override public void set(int index, Object element) throws Exception { // TODO Auto-generated method stub if(index>=count||index<0) {   throw new ArrayIndexOutOfBoundsException(index); } data[index]=element; } @Override public int size() { // TODO Auto-generated method stub return count; } }

MySet类的实现;基于上述的MyVector类实现

需要迭代器接口:基于数组实现的,因此可以

public interface MyIterator {  	//是否有下一个元素	public boolean hasNext();	//获得下一个元素	public Object next();}

下面是MySet类:里面存MyVector对象用于存数据

//用户自定义的MySet类public class MySet {	private MyVector value = new MyVector();		//添加对象	public void add(Object obj)throws Exception	{		//不允许添加空对象		if(obj==null)		{			return ;		}		//由于Set类不允许添加重复的元素,所有先查找该对象是否已经存在。		if(value.indexOf(obj)<0)		{			value.add(obj);		}		else		{			return;		}	}		//删除对象	public void remove(Object obj)throws Exception	{		value.remove(obj);	}		//是否包含一个对象	public boolean contain(Object obj)throws Exception	{		return value.contain(obj);	}		public int size()	{		return value.size();	}		public Object get(int index)throws Exception	{		return value.get(index);	}		//是否包含另一个集合对象.    public boolean include(Object obj)throws Exception    {    	if( obj instanceof MySet)    	{    		MySet set = (MySet)obj;    		int count=0;    		while(count
0;    }         }

集合框架实现双色球机选号码:

public class MyLotto {		public static void main(String[] args) {				Vector
 v = new Vector
(); //初始化红球号码 for(int i=1;i<=33;i++) { v.add(i); } //随机生成六个红球 for(int i=0;i<6;i++) {         //在v删除后,v的长度会变,因此下面的len也会变,随机取位置时可以从所在范围内取,可以保证取得对应位置上的数字唯一,因为下面取到后就删除了。         //简单说就是把数字放在vector中,取一个删一个,直至选出六个即可 int len = v.size(); int random = (int)(Math.random()*100)%len;  System.out.println("第"+(i+1)+"个红球号码是:"+v.get(random)); //取出一个位置的号码后,会把这个位置删掉,也就是前移一位     v.remove(random);//删除元素   } //随机抽取篮球 int num = (int)(Math.random()*100)%16; //从0-15,因此要加一 System.out.println("蓝球号码是:"+(num+1)); }}