手动实现一个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]; } }