import java.util.Arrays;
public class SeqList {
private int[] data = new int[10];
private int size = 0;
public void display(){
//System.out.println(Arrays.toString(data));
System.out.print("[");
for(int i = 0;i < size;i++){
System.out.print(data[i]);
if(i != size - 1){
System.out.print(",");
}
}
System.out.print("]");
System.out.println();
}
//插入元素 pos:插入下标 elem:插入元素
public void add(int pos,int elem){
//空数组情况
if(pos > data.length || pos < 0){
return;
}
//扩容情况
if(size > data.length){
realloc();
}
//尾插
if(pos == size){
data[pos] = elem;
size++;
return;
}
//中间位置插入
else{
for(int i = size;i > pos;i--){
data[i] = data[i-1];
}
data[pos] = elem;
size++;
return;
}
}
//扩容方法
public void realloc(){
int[] newData = new int[this.data.length*2];
for(int i = 0;i < this.data.length;i++){
newData[i] = this.data[i];
}
this.data = newData;
}
//判断某个元素是否存在
public boolean contains(int toFind){
return this.search(toFind) != -1;
}
//查找某个元素是否存在
public int search(int toFind){
for(int i = 0;i < this.size;i++){
if(this.data[i] == toFind){
return i;
}
}
return -1;
}
//获取某个位置的元素
public int getPos(int pos){
return this.data[pos];
}
//修改某个下标的值
public void setPos(int pos,int elem) {
this.data[pos] = elem;
}
//按值删除
public void remove(int toRemove){
int pos = search(toRemove);
if(pos == -1){
return;//这个值不存在
}
//尾删
if(pos == this.size - 1){
this.size--;
return;
}
//删除中间的位置
for(int i = pos;i < this.size - 1;i++){
this.data[i] = this.data[i + 1];
}
this.size--;
return;
}
//求长度
public int size(){
return this.size;
}
//清空
public void clear(){
this.size = 0;
this.data = new int[10];//缩容
}
}
测试代码
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
public class Test {
public static void main(String[] args){
TestAdd();
TestContains();
TestSearch();
TestgetPos();
TestsetPos();
TestRemove();
}
public static void TestAdd(){
System.out.println("测试add方法:");
SeqList seqList = new SeqList();
seqList.add(0,1);
seqList.add(1,2);
seqList.add(2,3);
seqList.add(3,4);
seqList.add(2,5);
seqList.display();
seqList.add(3,2);
seqList.display();
}
public static void TestContains(){
System.out.println("测试contains方法:");
SeqList seqList = new SeqList();
seqList.add(0,1);
seqList.add(1,2);
seqList.add(2,3);
seqList.add(3,4);
boolean result = seqList.contains(3);
boolean result1 = seqList.contains(5);
System.out.println("result预期值为true,实际值为:"+result);
System.out.println("result预期值为false,实际值为:"+result1);
}
public static void TestSearch(){
System.out.println("测试search方法:");
SeqList seqList = new SeqList();
seqList.add(0,1);
seqList.add(1,2);
seqList.add(2,3);
seqList.add(3,4);
int result = seqList.search(2);
int result1 = seqList.search(5);
System.out.println("result预期值是1,实际值是:"+result);
System.out.println("result预期值是-1,实际值是:"+result1);
}
public static void TestgetPos(){
System.out.println("测试getPos方法:");
SeqList seqList = new SeqList();
seqList.add(0,1);
seqList.add(1,2);
seqList.add(2,3);
seqList.add(3,4);
int result = seqList.getPos(3);
System.out.println("result预期值是4,实际值是:"+result);
}
public static void TestsetPos(){
System.out.println("测试setPos方法:");
SeqList seqList = new SeqList();
seqList.add(0,1);
seqList.add(1,2);
seqList.add(2,3);
seqList.add(3,4);
seqList.setPos(2,5);
seqList.display();
}
public static void TestRemove(){
System.out.println("测试remove方法:");
SeqList seqList = new SeqList();
seqList.add(0,1);
seqList.add(1,2);
seqList.add(2,3);
seqList.add(3,4);
seqList.remove(4);
seqList.display();
}
}