手动实现一个list的常用功能

package com.pcxm.list;


/**
 * 手动实现一个list
 * MyList
 * @description TODO
 * @author zhoum
 * @date 2018年5月24日 下午4:51:39
 * @version TODO
 */
public class MyList<T> {
    private static Integer default_size = 10;
    private static Integer arrSize = 0;
    private static Object [] obs ;
    public  void add(T t){
        //检查容量是否够
        checheck(arrSize+1);
        obs[arrSize++] = t;
    }
    //检查当前数组的容量是否够,如果不够,则替换新的数组
    private static void checheck(int size) {
        if(obs.length<size){
            //先创建一个新数组
            Object[] obj  = new Object[size*2]; 
            for (int i = 0; i < obs.length; i++) {
                obj[i] = obs[i];
            }
            obs = obj;//替换为新的数组实现扩容
        }
    }
    @SuppressWarnings("unchecked")
    public T get(int index){
        checkIndex(index);
        return (T)obs[index];
    }
    private void checkIndex(int index){
        if(index<0 || index>=arrSize){
            throw new RuntimeException("数组索引不正确");
        }
    }
    
    public int size(){
        return arrSize;
    }
    
    public void remove(int index){
        //先检查index是否在范围内
        checkIndex(index);
        //先看下是不是最后一位
        int changNum = arrSize-index-1;
        if(index==arrSize){
            obs[index] = null;
        }else{
            System.arraycopy(obs, index+1, obs, index, changNum);
        }
        arrSize--;
        
    }
    //初始化大小
    public MyList() {
        this(default_size);
    }
    public MyList(Integer default_size) {
        if(default_size<0){
            throw new RuntimeException("初始大小必需大于0");
        }
        obs = new Object[default_size];
    }
    
    
}

  

猜你喜欢

转载自www.cnblogs.com/hetutu-5238/p/9084331.html