//对顺序表的相关操作,其实可以理解为数组 import java.util.Arrays; public class MyArraylist { public int[] elem; public int usedSize;//0 //默认容量 private static final int DEFAULT_SIZE = 10; public MyArraylist() { this.elem = new int[DEFAULT_SIZE]; } /** * 打印顺序表: * 根据usedSize判断即可 */ public void display() { //遍历这个数组 for (int i = 0; i < usedSize; i++) { System.out.println(elem[i]); } } // 新增元素,默认在数组最后新增 public void add(int data) { //新增的时候要判断一下顺序表现在是否满,满的话就要扩容 if (isFull()) { this.elem = Arrays.copyOf(this.elem, 2 * this.elem.length); } elem[usedSize] = data; usedSize++; } /** * 判断当前的顺序表是不是满的! * * @return true:满 false代表空 */ public boolean isFull() { if (usedSize == elem.length) { return true; } return false; } private boolean checkPosInAdd(int pos) { if (pos < 0 || pos > usedSize) { return false; } return true;//合法 } private boolean checkGetInAdd(int pos) { if (pos < 0 || pos >= usedSize) return false; return true; } // 在 pos 位置新增元素 public void add(int pos, int data) { checkPosInAdd(pos); for (int i = 0; i < usedSize; i++) { elem[i + 1] = elem[i]; } usedSize++; } // 判定是否包含某个元素 public boolean contains(int toFind) { for (int i = 0; i < usedSize; i++) { if (elem[i] == toFind) return true; } return false; } // 查找某个元素对应的位置 public int indexOf(int toFind) { contains(toFind); for (int i = 0; i < usedSize; i++) { if (elem[i] == toFind) return i; } return -1; } // 获取 pos 位置的元素 public int get(int pos) { //判断pos位置是否为空 checkGetInAdd(pos); return elem[pos]; } private boolean isEmpty() { if (usedSize == 0) { return false; } return true; } // 给 pos 位置的元素设为【更新为】 value public void set(int pos, int value) { checkPosInAdd(pos); elem[pos] = value; } /** * 删除第一次出现的关键字key * * @param key */ public boolean remove(int key) { int index = indexOf(key); if (index == -1) return false; for (int i = index; i < usedSize - 1; i++) { elem[i] = elem[i + 1]; } usedSize--; elem[usedSize] = 0; return true; } // 获取顺序表长度 public int size() { return usedSize; } // 清空顺序表 public void clear() { this.usedSize = 0; }
单纯地纪念一下写出来的代码
不要忘记了这些基本的用法!!!