步骤:
第一步:先定义一个列表的接口,在接口里面定义关于列表的增删改查相关方法
public interface MyList { //新增一个元素 void add(Object element); //删除相同元素 void delete (Object element); //根据索引删除元素 void delete (int index); //将指定索引位置的元素替换成新元素 void update (int index ,Object newElement); //当前列表中是否含有target这个元素 boolean contains (Object target); //返回指定索引出的元素 Object at(int index); //查找element的索引,如果没有返回-1 int indexOf(Object e); }
第二步:创建一个MyArrayList类,实现MyList接口的方法(实现接口的时候,需要对里面的方法进行方法重写)
/** * 用顺序存储(数组)方式来实现列表 * **/ public class MyArrayList implements MyList { private Object[] elements; //真正存储元素的底层结构 private int size=0; //元素的个数 //也可以指向空的位置 private int capacity=10;//容量 //用户来指定容量 public MyArrayList(int capacity) { this.capacity = capacity; elements = new Object[capacity]; } //可以使用默认值容量 public MyArrayList() { elements = new Object[capacity]; }
//增加元素方法的实现 @Override public void add(Object element) { if(size==capacity){ //扩容 capacity*=2;//增加一倍的容量 Object[] newArray = new Object[capacity];//新建一个数组 for(int i=0;i<size;i++){ newArray[i]=elements[i]; } elements = newArray; } elements[size]=element; //将需要存的元素添加到列表中 size++; }
//删除元素方法的实现 @Override public void delete(Object element) { int index=indexOf(element); if(index>=0){ delete(index); }else{ System.out.println("删除失败"); } } @Override public void delete(int index) { for (int i = index; i <size ; i++) { elements[i]=elements[i+1]; } elements[elements.length-1]=null; size--; }
//修改元素方法的实现 @Override public void update(int index, Object newElement) { elements[index]=newElement; } //查找元素方法的实现 @Override public boolean contains(Object target) { return indexOf(target)>=0; } @Override public Object at(int index) { return elements[index]; } @Override public int indexOf(Object e) { for (int i = 0; i <size; i++) { if (elements[i].equals(e)){ return i; } } return -1; } @Override public String toString() { StringBuilder sb = new StringBuilder("["); for(int i=0;i<size;i++){ sb.append(elements[i]+(i==size-1?"":",")); } sb.append("]"); return sb.toString(); } }
第三步:对MyArrayList进行测试
public class test { public static void main(String[] args) { MyArrayList list = new MyArrayList(); System.out.println("-----增加元素测试-----"); list.add("nike"); list.add("addids"); list.add("NB"); list.add("NB"); System.out.println(list); System.out.println("-----删除元素测试-----"); list.delete(1); System.out.println("删除addids后输出:"+list); list.delete("NB"); System.out.println("删除NB后输出:"+list); System.out.println("-----更改测试-----"); list.update(1,"syx"); System.out.println("更改scy为syx"+list); System.out.println("-----查找测试-----"); boolean b=list.contains("nike"); System.out.println("查找是否有nike "+b); int index=list.indexOf("syx"); System.out.println("查找syx的位置 "+index); Object a=list.at(0); System.out.println("查找第一个元素Nike "+a); }
第四步:测试结果