以下是存放整形数据类型的顺序表的简单实现:
1,创建一个接口,里面定义一些顺序表需要的方法。
public interface IList {
// 新增元素,默认在数组最后新增
void add(int data);
// 在 pos 位置新增元素
void add(int pos, int data);
// 判定是否包含某个元素
boolean contains(int toFind);
// 查找某个元素对应的位置
int indexOf(int toFind);
// 获取 pos 位置的元素
int get(int pos);
// 给 pos 位置的元素设为 value
void set(int pos, int value);
//删除第一次出现的关键字key
void remove(int toRemove);
// 删除index位置上的元素
void indexRemove(int index);
// 获取顺序表长度
int size();
// 清空顺序表
void clear();
// 打印顺序表。
void display();
//判断顺序表是否满了
boolean isFull();
//对顺序表进行扩容
void toExpansion();
}
2,创建一个顺序表类实现这个接口,定义一些成员变量,并对实现的方法进行重写。
import java.util.Arrays;
public class ArraList implements IList{
private static final int defaultsize = 10;
private int[] array = new int[defaultsize];
private int usedsize=0;
@Override
public void add(int data) {
if(isFull())
toExpansion();
array[size()] = data;
usedsize++;
}
@Override
public void add(int pos, int data) {
if(pos < 0 || pos > size())
throw new IndexOutOfBoundsException("输入的下标不在顺序表范围内");
if (isFull())
toExpansion();
for (int i = size()-1; i>=pos ; i--) {
array[i+1] = array[i];
}
array[pos] = data;
usedsize++;
}
@Override
public boolean contains(int toFind) {
for (int i = 0; i < size(); i++) {
if (array[i] == toFind)
return true;
}
return false;
}
@Override
public int indexOf(int toFind) {
for (int i = 0; i < size(); i++) {
if (array[i] == toFind)
return i;
}
return -1;
}
@Override
public int get(int pos) {
if(pos < 0 || pos > size())
throw new IndexOutOfBoundsException("输入的下标不在顺序表范围内");
return array[pos];
}
@Override
public void set(int pos, int value) {
if(pos < 0 || pos > size())
throw new IndexOutOfBoundsException("输入的下标不在顺序表范围内");
array[pos] = value;
}
@Override
public void remove(int toRemove) {
int i;
for ( i = 0; i < size(); i++) {
if (array[i] == toRemove)
break;
}
for (int j = i+1; j < size() ; j++) {
array[j-1] = array[j];
}
if (!(i == size()))
usedsize--;
}
@Override
public void indexRemove(int index) {
if(index < 0 || index >= size())
throw new IndexOutOfBoundsException("输入的下标不在顺序表范围内");
remove(array[index]);
}
@Override
public int size() {
return usedsize;
}
@Override
public void clear() {
usedsize = 0;
}
@Override
public void display() {
for (int i = 0; i < usedsize; i++) {
System.out.print(array[i]+" ");
}
System.out.println();
}
@Override
public boolean isFull() {
if (size() == array.length)
return true;
else
return false;
}
@Override
public void toExpansion() {
array = Arrays.copyOf(array,array.length*2);
}
}
以上就是一个简单的顺序表的实现过程。