`
西口西
  • 浏览: 9503 次
社区版块
存档分类
最新评论

数组队列

    博客分类:
  • java
阅读更多

数组队列

 

数组有固定的长度,里面放置的数据也都是固定的一个类型,
当不能确定需要的长度时,实例化数组时的长度可能不够用,又或者太大造成空间浪费,

因此,我们需要一个更加灵活的东西来存储东西,

它的长度可以随着需求变化,里面存放的内容也可以多种多样。

这就是队列

 

队列在本质上也是一种数组,但它是活的,可变程度很大。
队列里面可以写多种方法对其进行添加,移除等多种操作。

为了让队列里可以存储多种不同类型的数据,在定义队列类中的数组类型 时可以这样。

private Object[] array = new Object[0];

这就使得任何类型的内容都可以存入该队列的数组中。

但是,有些时候使用队列只想要存入某种特定类型的数据,这时是否要重写一个队列,

在其中定义一个你想要的数据类型的数组呢?

不用这么麻烦。

/**
 * 队列类
 * @param args
 */
public class Arraylist<E> {
	private int  size = 0;
	private Object[] array = new Object[0];

	// 添加新元素
	public void add(E e) {
		// 定义一个比原数组长一个单位的新数组array1
		Object array1[] = new Object[size + 1];
		// 把原数组中的元素传给新数组
		for (int i = 0; i < size; i++) {
			array1[i] = array[i];
		}
		// 把新元素添加给新数组的最后一个位置
		array1[size] = e;
		// 让原数组指向新数组
		size++;
		array = array1;
	}
	
	// 删除,根据下标
	public void delete(int n) {
		if (n >= 0 && n < size) {
			// 定义一个比原数组短一个单位的新数组array1
			Object array2[] = new Object[size - 1];
			// 把被删除元素前的元素原样传给新数组
			for (int i = 0; i < n; i++) {
				array2[i] = array[i];
			}
			// 把被删除元素后的元素向前移动一位传给新数组
			for (int i = n; i < size - 1; i++) {
				array2[i] = array[i + 1];
			}
			// 数组元素个数减少
			size--;
			// 让原数组指向新数组
			array = array2;
		}
	}
	//得到对象,根据下标
	public E gete(int n){
		if(n>=0&&n<getsize()){
			E e=(E) array[n];
			return e;
		}
		return null;
	}
	// 得到数组元素个数
	public int getsize() {
		return size;
	}

}

 

这样写好队列之后,想要使用队列时,只需要在初始化的时候这样:

public Arraylist<Chess> arrc = new Arraylist();

 在尖括号里表明你想存的数据类型就可以啦~

很方便吧。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics