1.用数组的方式实现列表

步骤:  

    第一步:先定义一个列表的接口,在接口里面定义关于列表的增删改查相关方法

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);
    }

     第四步:测试结果

 

原文地址:https://www.cnblogs.com/songchengyu/p/12968343.html