1-自己动手编写ArrayList集合

学习集合的原理,这是一个很简单的代码,没有索引下标越界判断,异常处理等,不够健壮,后面会继续更新完善代码.....

只是入门学习一下

package my;

/***
 * 自己动手编写一个ArrayList类
 * @author 刘诗华
 *
 */
public class ArrayList {
    
    //集合默认初始化长度为10个元素
    private final static int DEFAULT_CAPACITY = 10;
    
    //当前集合中存储了多少个元素
    private int size=0;
    
    //存储对象容器
    private Object[] ele=null;
    
    //无参数构造器
    public ArrayList()
    {
        this(DEFAULT_CAPACITY);
    }
    //带参数构造器
    public ArrayList(int initialCapacity)
    {
        ele=new Object[initialCapacity];
    }
    
    //添加元素
    public void add(Object e)
    {
        ele[size]=e;
        size++;
    }
    
    //获取指定索引元素
    public Object get(int index)
    {
        return ele[index];
    }
    
    //获取元素第一次在集合出现的索引位置
    public int indexOf(Object o)
    {
        for(int index=0;index<size;index++)
        {
            if(o.equals(ele[index]))
                return index;
        }
        return -1;
    }
    
    //查询元素最后一次出现的索引
    public int lastIndexOf(Object o)
    {
        int len=size-1;
        for(int index=len;index!=-1;index--)
        {
            if(o.equals(ele[index]))
                return index;
        }
        return -1;
    }
        
    //替换元素
    public void set(int index, Object element)
    {
        ele[index]=element;
    }
    
    //返回集合存储元素长度
    public int size()
    {
        return this.size;
    }
    
    //判断是否为空集合
    public boolean isEmpty()
    {
        return size == 0;
    }
    
    //清空集合所有元素
    public void clear()
    {
        ele=new Object[DEFAULT_CAPACITY];
        size=0;
    }
    
    //判断集合是否包含某个元素
    public boolean contains(Object o)
    {
        int len=size-1;
        for(int index=len;index != -1; index--)
        {
            if(o.equals(ele[index]))
                return true;
        }
        return false;
    }
    
    //删除某个元素
    public void remove(Object o)
    {
        int index=this.indexOf(o);
        
        for(int i=index;index<=size-1;index++)
        {
            ele[index]=ele[index+1];
            ele[index+1]=null;
            size--;
        }
    }
    
    //删除指定索引位置的元素
    public void remove(int index)
    {
        for(int i=index;index<=size-1;index++)
        {
            ele[index]=ele[index+1];
            ele[index+1]=null;
            size--;
        }
    }
    
    
    @Override
    public String toString() {
        
        if(ele == null)
            return "null";
        
        if(size ==0)
            return "[]";
        
        StringBuilder sb=new StringBuilder();
        sb.append("[");
        for(int index=0;index<size;index++)
        {
            sb.append(ele[index]);
            if(index != size-1)
                sb.append(",");
        }
        sb.append("]");
        return sb.toString();
    }
    
    
    
}

 

posted @ 2018-10-08 23:19  往事只能回味---  阅读(217)  评论(0编辑  收藏  举报