java学习之—实现一个简单的ArrayList
Posted 花儿为何那样红
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习之—实现一个简单的ArrayList相关的知识,希望对你有一定的参考价值。
package thread1; /** * 实现一个简单的ArrayList * * @Title: uminton */ public class SimpleArrayList<T> { //数组中元素的大小 private Integer elementSize = 0; //创建SimpleArrayList时,数组的容量,默认为16 private Integer arrayCapacity = 16; //当数组容量不够时,默认每次扩容的大小 private static final Integer DEFUALT_EXPAND_SIZE = 16; //元素容器 Object[] array = null; //无参数构造,设置默认容量 public SimpleArrayList(){ this(DEFUALT_EXPAND_SIZE); } /** * 有参数构造,创建容器,设置数组大小 * @param arrayCapacity */ public SimpleArrayList(Integer arrayCapacity){ super(); if(arrayCapacity < 0){ throw new IllegalArgumentException("数组空间越界"); } array = new Object[arrayCapacity]; this.arrayCapacity = arrayCapacity; } /** * 插入一个新元素,如果数组可以放下,直接添加 * 如果数组中放不下,扩容 * @param v */ public void add(T v){ //如果数组可以放下,直接添加 if(elementSize < arrayCapacity){ array[elementSize++] = v; }else { //如果数组放不下,扩容后再添加 arrayCapacity += DEFUALT_EXPAND_SIZE; //扩容 System.out.println("数组放不下扩容:"+arrayCapacity); Object[] newArray = new Object[arrayCapacity]; //创建新的数组 System.arraycopy(array,0,newArray,0,array.length); //拷贝数据到新的数组 array = newArray; //从新的数组赋值到原数组 array[elementSize++] = v;//添加 } } /** * 根据指定下标查找元素 * @param index * @return */ public T get(int index){ if(index > elementSize-1 || index < 0){ throw new ArrayIndexOutOfBoundsException(index); } return (T) array[index]; } /** * 删除指定位置的元素,所有之后的元素需要前移 * @param index */ public void remove(int index){ if(index > elementSize-1 || index < 0){ throw new ArrayIndexOutOfBoundsException(index); } for (int i = index; i < elementSize-1; i++) { array[i] = array[i+1]; //覆盖前一个数据 } elementSize--; } /** * 更新指定位置上的元素 * @param index * @param t */ public void update(int index,T t){ if(index > elementSize-1 || index < 0){ throw new ArrayIndexOutOfBoundsException(index); } array[index] = t; } /** * 返回array中元素的大小 * @return */ public Integer size(){ return elementSize; } public Integer capacity(){ return arrayCapacity; } public static void main(String[] args) { SimpleArrayList<Integer> list = new SimpleArrayList<>(); //添加 for (int i = 0; i < 20; i++) { list.add(i); } //遍历 for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)+" "); } //删除index为10的元素 list.remove(10); for (int i = 0; i < list.size(); i++) { System.out.println("index:"+i+";value:"+list.get(i)); } System.out.println("size:" + list.size() + ",capacity:" + list.capacity()); } }
以上是关于java学习之—实现一个简单的ArrayList的主要内容,如果未能解决你的问题,请参考以下文章