顺序表

顺序表

顺序表是线性表以顺序存储方式实现的,存储与内存中的一块连续存储空间。

代码实现

package arraylist;

import java.util.Arrays;

public class ArrayList {

	private Object[] array; // 使用数组存储数据
	private int size; // 顺序表中数据的个数

	// 无参构造
	public ArrayList() {
		this(4);
	}

	// 有参构造
	public ArrayList(int initlength) {
		array = new Object[initlength];
	}

	// 获取顺序表长度
	public int Length() {
		return array.length;
	}
	
	//判断顺序表是否为空
	public boolean isEmpty() {
		return size==0;
	}
	
	//获取顺序表数据个数
	public int size() {
		return size;
	}
	
	// 添加数据,添加位置为i,数据为e
	public void add(int i, Object e) {
		// 先校验位置i是否合理
		if (i < 0 || i > size) {
			throw new RuntimeException("插入索引越界:" + i);
		}
		// 判断是否需要扩容 扩容为原先长度的两倍
		if (size == array.length) {
			// 创建一个新的数组
			array = Arrays.copyOf(array, array.length * 2);
			// 将旧数组的数据存入新数组中
			for (int j = size; j > i; j--) {
				array[j] = array[j - 1];
			}
		}
		// 添加数据
		array[i] = e;
		size++;
	}

	// 在顺序表末尾添加数据
	public void add(Object e) {
		this.add(size, e);
	}
	
	//删除索引位置数据
	public void delete(int i) {
		for(int j=i;j<size;j++) {
			array[j] = array[j+1];
		}
		size--;
	}
	
	//查看索引位置数据
	public Object select(int i) {
		return array[i];
	}
	
	//修改索引位置数据
	public void updata(int i,Object e) {
		array[i] = e;
	}
	// 打印顺序表
	@Override
	public String toString() {
		StringBuffer buffer = new StringBuffer("[");
		for (int i = 0; i < size; i++) {
			if (i != size - 1) {
				buffer.append(array[i] + ",");
			} else {
				buffer.append(array[i]);
			}
		}
		buffer.append("]");
		return buffer.toString();
	}
}
posted @ 2020-05-08 22:26  成为海贼王的男人  阅读(135)  评论(0)    收藏  举报