Java实现顺序表的增删改查等基本功能
顺序表就是一个数组,需要对数组,容量,下标进行定义
package demo0721;
import java.util.Arrays;
/**
* 顺序表
*/
public class ArrayList {
/**
* 定义顺序表的属性和构造方法
*/
public int[] arr;
public final int capatity = 10;
public int size;
public ArrayList(){
this.size=0;
//数组初始化
this.arr=new int[capatity];
}
/**
* 插入元素
*/
public void add(int pos , int data){
/**
* 如果顺序表容量满了,就扩容
* 扩容用到Arrays.copyof()
*/
if (arr.length==size){
this.arr = Arrays.copyOf(this.arr, this.arr.length*2);
}
/**
* 判断pos插入的合法性
*/
if (pos<0 || pos > this.size){
System.out.println("pos的位置不合法!");
return;
}else{
for (int i = this.size-1;i>=pos;i--){
arr[i+1] = arr[i];
}
arr[pos] = data;
size++;
}
}
/**
* 获取顺序表的长度
*/
public int size(){
return this.size;
}
/**
* 获取 pos 位置的元素
*/
public int getelement(int pos){
if (pos<0 || pos>this.size){
return -1;
}
return this.arr[pos];
}
/**
* 判断是否包含某个元素
*/
public boolean contains(int key){
for (int i = 0 ;i<size;i++){
if (arr[i]==key){
return true;
}
}
return false;
}
/**
*情况顺序表
*/
public void clear(){
this.size=0;
}
/**
* 删除第一次出现的关键字key
*/
public void remove(int key){
int i = 0;
int flag = 1;
int j = 0;
if (size==0){
System.out.println("空表");
return;
}
/**
* 查找要删除元素下标
*/
for (i=0;i<this.size;i++){
if (arr[i]==key){
flag = -1;
break;
}
}
if (flag != -1){
System.out.println("没找到对应元素");
return;
}
//找到了key对应的pos;开始覆盖
for(j=i;j<size-1;j++){
arr[j]=arr[j+1];
}
size--;
}
/**
* 打印
*/
public void display(){
for (int i = 0 ; i<size;i++){
System.out.print(arr[i]+" ");
}
}
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
System.out.println("按位置插入以下元素");
arrayList.add(0, 0);
arrayList.add(1, 1);
arrayList.add(2, 2);
arrayList.add(3, 3);
arrayList.add(4, 4);
arrayList.display();
System.out.println();
System.out.println("获取顺序表的长度");
System.out.println(arrayList.size);
System.out.println("pos=5处插入元素5");
arrayList.add(5, 5);
arrayList.display();
System.out.println();
System.out.println("是否包含下列元素");
System.out.println(arrayList.contains(6));
System.out.println(arrayList.contains(3));
System.out.println("获取顺序表的长度");
System.out.println(arrayList.size);
System.out.println("get pos位置的元素");
System.out.println(arrayList.getelement(3));
// System.out.println("清空顺序表");
// arrayList.clear();
// System.out.println();
System.out.println("打印顺序表");
arrayList.display();
System.out.println();
System.out.println("删除元素key: ");
arrayList.remove(6);
arrayList.display();
}
}
运行结果: