1.相关操作的实现
package Listdemo;
import java.util.Arrays;
public class MyArrayList implements Ilist{
public int [] elem=new int[2];
public int usedSize=0;
//扩容
private void grow() {
elem = Arrays.copyOf(elem,2*elem.length);
}
@Override
//新增元素,默认在数组最后新增
public void add(int data) {
if(isFull()){
grow();
}
elem[usedSize]=data;
usedSize++;
}
@Override
// 在 pos 位置新增元素;
public void add(int pos, int data) throws ArrayException {
if(pos < 0 || pos > usedSize) {
throw new ArrayException("pos位置不合法");
}
if(isFull()){
grow();
}
for (int i = usedSize-1; i >=pos; i--) {
elem[i]=elem[i+1];
}
elem[pos]=data;
usedSize++;
}
@Override
// 判定是否包含某个元素
public boolean contains(int toFind) throws ArrayException {
if(isEmpty()){
throw new ArrayException("数组为空,不存在元素");
}
for (int i = 0; i < elem.length; i++) {
if(elem[i]==toFind){
return true;
}
}
return false;
}
@Override
// 查找某个元素对应的位置
public int indexOf(int toFind) throws ArrayException {
if(usedSize==0){
throw new ArrayException("数组为空");
}
for (int i = 0; i < elem.length; i++) {
if(elem[i]==toFind){
return i;
}
}
return 0;
}
@Override
// 获取 pos 位置的元素
public int getPosval(int pos) throws ArrayException {
if(pos<0||pos>usedSize){
throw new ArrayException("该位置错误");
}
return elem[pos];
}
@Override
public void remove(int toRemove) throws ArrayException {
if(toRemove<0||toRemove>=usedSize){
throw new ArrayException("删除位置错误");
}
for (int i = toRemove; i < usedSize; i++) {
elem[i]=elem[i+1];
}
}
@Override
// 获取顺序表长度
public int size() throws ArrayException {
if(usedSize==0){
throw new ArrayException("数组为空");
}
return usedSize;
}
@Override
public Boolean isEmpty() {
if(usedSize==0){
return true;
}
return false;
}
@Override
public Boolean isFull() {
if(usedSize== elem.length){
return true;
}
return false;
}
@Override
// 清空顺序表
public void clear() {
usedSize=0;
}
@Override
// 打印顺序表
public void display() {
for (int i = 0; i < elem.length; i++) {
System.out.println(elem[i]+" ");
}
}
}
2.相关接口
package Listdemo;
public interface Ilist {
// 新增元素,默认在数组最后新增
void add(int data) throws ArrayException;
// 在 pos 位置新增元素;
void add(int pos, int data) throws ArrayException;
// 判定是否包含某个元素
boolean contains(int toFind) throws ArrayException;
// 查找某个元素对应的位置
int indexOf(int toFind) throws ArrayException;
// 获取 pos 位置的元素
public int getPosval(int pos) throws ArrayException;
//删除第一次出现的关键字key
void remove(int toRemove) throws ArrayException;
// 获取顺序表长度
int size() throws ArrayException;
// 清空顺序表
void clear();
// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的
void display();
//判断数组是否为空
Boolean isEmpty();
//判断数组是否满了
Boolean isFull();
}
3.相关操作的调用
package Listdemo;
public class Test {
public static void main(String[] args) throws ArrayException {
MyArrayList myArrayList=new MyArrayList();
myArrayList.add(1);
myArrayList.add(2);
myArrayList.add(3);
myArrayList.add(4);
myArrayList.add(5);
myArrayList.display();
System.out.println("============");
myArrayList.add(5,10);
myArrayList.display();
System.out.println(myArrayList.contains(2));
System.out.println(myArrayList.getPosval(3));
System.out.println("============");
myArrayList.indexOf(1);
myArrayList.remove(2);
System.out.println("============");
myArrayList.display();
}
}
4.异常的声明
package Listdemo;
public class ArrayException extends Exception{
public ArrayException(String message) {
super(message);
}
}