数组实现列表-增删改查
(未完成)
定义一个接口:
/* * 线性表(列表)的接口定义 * */ public interface MyArrayList { /*新增一个元素*/ void add(Object element); /*删除相同元素*/ void delete(Object element); /*根据索引删除元素*/ void delete(int index); /* * 将指定索引位置的元素替换成新元素 */ void update(int index,Object newElment); /* * 当前列表中是否含有target这个元素 */ boolean contains(Object target); /* * 返回指定索引处的元素 */ Object at(int index); /* * 根据元素查找对应索引 */ int indexof(Object element); }
实现类:
/* * * 用顺序存储方式来实现 */ public class MyList implements MyArrayList{ private Object[] elements;//真正存储元素的底层结构 private int size = 0;//元素个数 private int capacity = 10; //容量 public MyList(int capacity) { super(); this.capacity = capacity; elements = new Object[capacity]; } public MyList() { elements = new Object[capacity]; } @Override public void add(Object element) { if(size==capacity) {//扩容 capacity*=2;//增加一倍的容量 Object[] newArr = new Object[capacity];//新建一个数组 for (int i = 0; i < size; i++) { newArr[i] = elements[i]; } elements = newArr;//把旧的那个柜子扔掉 } elements[size++]=element; } @Override public void delete(Object element) { int index = indexof(element); if (index>=0) { delete(index); } } @Override public void delete(int index) { } @Override public void update(int index, Object newElment) { elements[index] = newElment; } @Override public boolean contains(Object target) { return indexof(target)>=0; } @Override public Object at(int index) { return elements[index]; } @Override public int indexof(Object element) { for (int i = 0; i < size; i++) { if(element.equals(elements[i])) { return i; } } return -1; } // @Override // public String toString() { // return "MyList [elements=" + Arrays.toString(elements) + "]"; // } public String toString() { StringBuilder sBuilder = new StringBuilder("["); for (int i = 0; i < size; i++) { sBuilder.append(elements[i]+(i==size-1?"":",")); } sBuilder.append("]"); return sBuilder.toString(); } }
单元测试类:
class MyListTest { MyList list = new MyList(); @Test void testAdd() { list.add("nike"); list.add("addidiaas"); list.add("NB"); list.add("nike"); list.add("addidiaas"); list.add("NB"); list.add("nike"); list.add("addidiaas"); list.add("NB"); list.add("nike"); list.add("addidiaas"); list.add("NB"); System.out.println(list); } @Test void testDeleteObject() { } @Test void testDeleteInt() { } @Test void testUpdate() { } @Test void testContains() { } @Test void testIndexOf() { } @Test void testat() { }