欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组队列

程序员文章站 2024-03-18 11:17:46
...

数组队列

 

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

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

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

这就是队列

 

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

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

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();

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

很方便吧。

 

相关标签: 队列 java