上一篇文章是动态数组, 但是只能用在int, 这次修复了部分上次运行潜在的问题, 并更新为支持不同类型的内容进入数组实现支持泛型的Java动态数组普通数组虽然优点在于便于通过位置进行取值, 但存在一个明显的缺点, 就是长度一旦创建就无法更改. 一旦数组满了, 就只有再创建一个数组. 而动态数组能够较好的应对这种情况.关于使用泛型就是为了让数组的内容不仅仅限于int, 还可以是double, string等任何类型的数据.arrInteger list new arr(); arrString list2 new arr();动态数组先定义一个泛型类public class arrE要有初始数组public Object[] arrnew Object[0];下面就是需要用到的方法添加数据public void add(E e) { //根据原数组大小, 进行扩容 Object[] nArr new Object[arr.length1]; nArr[arr.length] e; //拷贝原数组数据 for (int i 0; iarr.length;i){ nArr[i]arr[i]; } //更新对象头 arr nArr; }插入数据public void inset(int index, E e){ if(index0 index arr.length) { Object[] nArr new Object[arr.length 1]; nArr[index] e; for (int i 0; i index; i) { nArr[i] arr[i]; } for (int j index; j arr.length; j) { nArr[j1] arr[j]; } arr nArr; }else { System.out.println(WRONG); } }移除指定位置数据, 并且返回被删除的数据public boolean remove(int index){ if(index0 index arr.length) { Object remove arr[index]; Object[] nArr new Object[arr.length - 1]; for (int i 0; i index; i){ nArr[i] arr[i]; } for (int j index1; jarr.length;j){ nArr[j-1] arr[j]; } arr nArr; System.out.println(remove: remove); }else { System.out.println(WRONG); } return false; }删除指定数据public boolean removes(E e) { for (int i 0; iarr.length;i){ if(arr[i].equals(e)){ remove(i); return true; } } return false; }删除所有相同数据这里没有用i的样子是因为后面再运行的时候发现如果正着写, 要是碰到那个位置刚好是被要单独删掉的内容占据了它就直接停下来了不会再排查是否还有一样的数据要删除public boolean removeAll(E e){ boolean flag false; for (int i arr.length-1; i0;i--){ if (arr[i].equals(e)){ remove(i); flag true; } } return flag; }获取指定位置数据public E get(int index){ return (E) arr[index]; }长度public int size(){ return arr.length; }往数组里加点东西, 试着运行一下public static void main(String[]args){ arr Integer list new arr(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(3); list.remove(1); list.inset(1,20); list.removes(20); list.removeAll(3); arrString list2new arr(); list2.add(hello); list2.add(world); list2.add(goodbye); list2.add(world); list2.remove(2); list2.inset(1,c u again); list2.removes(hello); list2.removeAll(world); //遍历数据 for (int i0; ilist.size();i){ Object data list.get(i); System.out.println(datadata); } for (int j0; jlist2.size();j){ Object data2list2.get(j); System.out.println(data2data2); } }下面就是运行的结果算是成功运行上了:D