数组实现列表-增删改查

(未完成)

定义一个接口:

/*
 * 线性表(列表)的接口定义
 * 
 */
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() {
        
        
        
    }

 

posted @ 2021-03-10 11:46  别看我看路  阅读(66)  评论(0编辑  收藏  举报