首页 > 编程语言 > 详细

数组实现列表-增删改查

时间:2021-03-10 15:10:42      阅读:28      评论:0      收藏:0      [点我收藏+]

(未完成)

定义一个接口:

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

 

数组实现列表-增删改查

原文:https://www.cnblogs.com/159357zzx/p/14510667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!