import java.util.Arrays;
/**
* ArrayList的模拟实现
*/
class SeqList{
private int[] elem;
private int usedSize=0;//记录当前顺序表有多少个有效数字
public static final int DEFAULT_CAPACITY=10;//默认大小是10
public SeqList(){
this.elem=new int[DEFAULT_CAPACITY];
}
//新增元素,默认在数组最后新增
public void add(int data){
//判断是否表满了 ,表满了需要扩容
if(isFull()){
elem= Arrays.copyOf(elem,elem.length*2);
}
this.elem[usedSize]=data;
usedSize++;
}
public boolean isFull(){
if(elem.length==this.usedSize){
return true;
}
return false;
}
//在pos位置新增元素
public void add(int pos,int data){
if(pos<0||pos>this.usedSize){
throw new PosOutBoundsException("add 元素时,位置不合法");
}
if(isFull()){
elem=Arrays.copyOf(elem,elem.length*2);
}
//挪数据
for (int i = 0; i <usedSize; i++) {
this.elem[i+1]=this.elem[i];
}
//存数据
this.elem[pos]=data;
this.usedSize++;
}
//判断是否包含某个元素
public boolean isContains(int toFind){
for (int i = 0; i <this.usedSize; i++) {
if(elem[i]==toFind){
return true;
}
}
return false;
}
//查找某个元素对应的位置
public int indexOf(int toFind){
for (int i = 0; i <this.usedSize; i++) {
if(elem[i]==toFind){
return i;
}
}
return -1;
}
//获取pos位置的元素
public int get(int pos){
if(!checkPos(pos)){
throw new PosOutBoundsException("get 获取数据时,位置不合法");
}
return elem[pos];
}
//给pos位置的元素设置为value
public void set(int pos,int value){
if(!checkPos(pos)) {
throw new PosOutBoundsException("set 获取数据时,位置不合法");
}
this.elem[pos]=value;
}
public boolean checkPos(int pos){
if(pos<0||pos>=this.usedSize){
return false;
}
return true;
}
//删除第一次出现的关键字key
public void remove(int toRemove){
if(isEmpty()){
return;
}
int index=indexOf(toRemove);//找到toRemove 的下标
if(index==-1){
return ;//没有要删除的关键字
}
for (int i = index; i <this.usedSize; i++) {
this.elem[i]=this.elem[i+1];//后一个往前一个覆盖
}
usedSize--;
}
public boolean isEmpty() {
return usedSize==0;
}
//获取顺序表的长度
public int size(){
return usedSize;
}
//清空顺序表
public void clear(){
//基本数据类型
usedSize=0;
//引用类型
/*for (int i = 0; i <usedSize; i++) {
this.elem[i]=null;
}*/
}
//打印顺序表
public void display() {
for (int i = 0; i < elem.length; i++) {
System.out.print(elem[i]+" ");
}
System.out.println();
}
}
public class Test {
public static void main(String[] args) {
SeqList seqList=new SeqList();
seqList.add(1);
seqList.add(2);
seqList.add(3);
seqList.add(4);
seqList.add(5);
seqList.display();
}
}
我演示了一个display方法,其他的方法自己动手试试嗷!!!