public class SeqList {
private int[] array;
private int size;
// 默认构造方法
SeqList(){ }
// 将顺序表的底层容量设置为initcapacity
SeqList(int initcapacity){ }
// 新增元素,默认在数组最后新增
public void add(int data) { }
// 在 pos 位置新增元素
public void add(int pos, int data) { }
// 判定是否包含某个元素
public boolean contains(int toFind) { return true; }
// 查找某个元素对应的位置
public int indexOf(int toFind) { return -1; }
// 获取 pos 位置的元素
public int get(int pos) { return -1; }
// 给 pos 位置的元素设为 value
public void set(int pos, int value) { }
//删除第一次出现的关键字key
public void remove(int toRemove) { }
// 获取顺序表长度
public int size() { return 0; }
// 清空顺序表
public void clear() { }
// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的
public void display() { }
}
一、SeqList.java
package com;
import PosOutBoundsException.PosOutBoundsException;
import java.util.Arrays;
public class SeqList {
private int[] elem;
private int usedSize;
private static final int DEFAULT_CAPACITY=5;
public int[] getElem() {
return elem;
}
public void setElem(int[] elem) {
this.elem = elem;
}
public int getUsedSize() {
return usedSize;
}
public void setUsedSize(int usedSize) {
this.usedSize = usedSize;
}
public SeqList() {
}
public SeqList(int[] elem,int usedSize) {
this.elem=new int[DEFAULT_CAPACITY];
this.elem = elem;
this.usedSize = usedSize;
}
//打印顺序表,这不是顺序表的方法,只是为了方便看测试结果
public void display(){
for(int i=0;i<this.usedSize;i++){
System.out.print(this.elem[i]+" ");
}
System.out.println();
}
// 新增元素,默认在数组最后新增
public void add(int data) {
//判断是否满,若满需要扩容
if(isFull()){
resize();
}
elem[usedSize]=data;
usedSize++;
}
// 在pos位置新增元素
public void add(int pos, int data) {
//还需判断合法
if(pos < 0 || pos > this.usedSize) {
//必须是连续的
throw new PosOutBoundsException("添加元素的时候,pos位置不合法!");
}
if(isFull()){
resize();
}
//先把位置腾出来,在添加新元素,从后开始往后移
for(int i=this.usedSize;i>pos;i--){
this.elem[i]=this.elem[i-1];
}
elem[pos]=data;
this.usedSize++;
}
// 判定是否包含某个元素
public boolean contains(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(pos<0||pos>=usedSize)
throw new PosOutBoundsException("获取pos位置的元素失败");
return elem[pos];
}
// 给 pos 位置的元素设为 value
public void set(int pos, int value) {
if(pos<0||pos>usedSize)
throw new PosOutBoundsException("获取pos位置的元素失败");
elem[pos]=value;
}
//删除第一次出现的关键字key
public void remove(int toRemove) {
if(isEmpty()){
return;
}
int index=indexOf(toRemove);
for (int i = index; i < this.usedSize-1; i++) {
this.elem[i] = this.elem[i+1];
}
this.usedSize--;
}
// 获取顺序表长度
public int size() {
return this.usedSize;
}
public void resize(){
elem= Arrays.copyOf(elem,elem.length*2);
}
public boolean isFull(){
return elem.length==usedSize;
}
public void judge(boolean jud){
if(jud==true){
System.out.println(true);
}
else{
System.out.println(false);
}
}
public boolean isEmpty() {
return usedSize == 0;
}
// 清空顺序表
public void clear() {
this.usedSize = 0;
}
public static void main(String[] args) {
int[] elem = {1, 2, 3};
SeqList sm = new SeqList(elem, 3);
sm.display();
sm.add(5);
sm.display();
sm.add(2, 5);
sm.display();
sm.add(0, 8);
sm.display();
/*sm.judge(sm.contains(10));
sm.judge(sm.contains(2));
System.out.println(sm.indexOf(2));
System.out.println(sm.get(1));*/
//System.out.println(sm.get(-1));
sm.set(1,5);
sm.display();
System.out.println(sm.indexOf(2));
sm.remove(2);
sm.display();
System.out.println("=======");
sm.clear();
sm.display();
System.out.println("=======");
}
}
二、PosOutBoundsException.java
package PosOutBoundsException;
public class PosOutBoundsException extends RuntimeException {
public PosOutBoundsException() {
}
public PosOutBoundsException(String message) {
super(message);
}
}