本文共计700个文字,预计阅读时间需要3分钟。

javapackage com.hongliang;
/** * 顺序表的实现 * @author KevinHong */public class ArrayList { /** * 获取顺序表的容量 * @return 顺序表的容量 */ public int getCapacity() { return capacity; }}

gistfile1.txt
package com.hongliang;
/**
* 顺序表的实现
* @author KevinHong
*/
public class ArrayList
{
/**
* 获得顺序表的容量
* @return 顺序表的容量
*/
public int getCapacity() {
return capacity;
}
/**
* 获得顺序表当前元素的下标
* @return 当前元素的下标
*/
public int getCurrent() {
return current;
}
private Object[] data = null; //data:存放顺序表数据的数组
private int capacity = 0; //capacity: 顺序表的容量
private int current = 0; //current: 顺序表的当前元素的下标
public ArrayList(){
data = new Object[10];
}
/**
* 初始化顺序表,声明顺序表初始化的容量
* @param initSize 顺序表初始化的容量
*/
public ArrayList(int initSize) {
if(initSize >= 0) {
data = new Object[initSize];
this.capacity = initSize;
this.current = 0;
} else {
throw new RuntimeException("初始化值错误,不允许小于0");
}
}
/**
* 获取顺序表的元素个数
* @return 顺序表的元素个数
*/
public int size() {
return this.current;
}
/**
* 在顺序表最后追加元素
* @param element 需要追加的元素
* @return 返回追加元素后,当前元素的下标
*/
public int append(E element) {
ensureCapacity();
data[this.current] = element;
this.current++;
return this.current;
}
/**
* 在顺序表的指定位置插入元素
* @param index 想要插入元素的位置
* @param element 想要插入的元素
* @return 返回插入元素是否成功
*/
public boolean insert(int index, E element) {
ensureCapacity();
validateIndex(index);
for(int i = this.current; i > index; i--) {
data[i] = data[i-1];
}
data[index] = element;
this.current++;
return true;
}
/**
* 顺序表中指定下标设置元素
* @param index 顺序表中元素下标
* @param element 想要设置的元素
* @return 返回指定下标设置元素是否成功
*/
public boolean set(int index, E element) {
ensureCapacity();
validateIndex(index);
data[index] = element;
return true;
}
/**
* 获取顺序表中指定下标的元素
* @param index 顺序表中指定的位置
* @return 返回指定下标的元素
*/
public E get(int index) {
validateIndex(index);
return (E)data[index];
}
/**
* 删除顺序表中指定下标的元素
* @param index 顺序表中指定的下标
* @return 返回删除删除指定下标元素是否成功
*/
public boolean delete(int index) {
validateIndex(index);
for(int i = index; i < this.current - 1; i++) {
data[i] = data[i+1];
}
data[this.current] = null;
this.current--;
return true;
}
/**
* 将顺序表转换成字符串
* @return 转换后的字符串
*/
public String toString() {
String toString = "[";
for(int i = 0; i < size(); i++) {
if(i != size() - 1) {
toString += data[i] + "," ;
} else {
toString += data[i] + "";
}
}
toString += "]";
return toString;
}
/**
* 检查存储数据的数组容量,如果数组已经满,则扩充容量;否则不操作。
*/
private void ensureCapacity() {
if(this.current == this.capacity) {
this.capacity *= 2;
Object[] newData = new Object[this.capacity];
for(int i = 0; i < this.current; i++) {
newData[i] = data[i];
}
data = newData;
}
}
/**
* 验证下标值是否合法,非法时抛出异常
* @param index 待验证的下标值
*/
private void validateIndex(int index) {
if(index < 0 || index > this.current) {
throw new RuntimeException("不是合法的下标");
}
}
}