Java -- 自己实现数组列表(Arraylist)
2017-05-10 16:21
537 查看
Java – 自己实现数组列表(Arraylist)
一 . 元素
数组列表中的底层是以数组的方式实现的,因此,包括一个装数据的数组
然后一个表示个数的size
二 . 构造方法
1. 有参构造方法:如果传入initialCapacity<0,则抛出异常,否则,建立一个initialCapacity大小的数。
无参构造方法
直接调用有参的构造方法
3.普通方法
- 返回数组列表的大小
判空
在数组列表的末尾添加对象
首先要的对数组进行判满,如果满了,扩容,然后添加,大小+1;
如果判满后发现未满,则直接添加,大小+1.
通过索引,get到数组列表中的对象,不过要首先判断是否数组越界
通过传入的对象来查找数组中匹配的对象
遍历数组,用每一个objec来测试是否equals,如果是,就返回
如果不存在在数组里,就返回null
通过索引index来remove
首先要判断index是否越界
其次找到那个位置,remove
remove用Arraycopy,使得能够覆盖且让后面的向前进一位
最后,将原来的最后一个为止置空,size-1
remove根据传入的object,进行匹配删除
首先遍历数组,如果找到,remove
remove依然用ArrayCopy的方法进行覆盖,移动
依然要置空原来的最后一个位置,大小-1
如果没有匹配的,则返回null
set根据索引替换掉该位置的元素
add,根据index在此位置添加元素
利用ArrayCopy,复制index之后的元素到从index + 1 的位置开始,然后将index位置的元素替换掉,大小+1
一 . 元素
数组列表中的底层是以数组的方式实现的,因此,包括一个装数据的数组
然后一个表示个数的size
Object[] elemData; int size;
二 . 构造方法
1. 有参构造方法:如果传入initialCapacity<0,则抛出异常,否则,建立一个initialCapacity大小的数。
public SxtArrayList(int initialCapacity){ if(initialCapacity<0){ try { throw new Exception(); } catch (Exception e) { e.printStackTrace(); } } elementData = new Object[initialCapacity]; }
无参构造方法
直接调用有参的构造方法
public MyArrayList() { this(10); }
3.普通方法
- 返回数组列表的大小
public int size() { return size; }
判空
public boolean isEmpty() { return size == 0; } }
在数组列表的末尾添加对象
首先要的对数组进行判满,如果满了,扩容,然后添加,大小+1;
如果判满后发现未满,则直接添加,大小+1.
public void add(Object object) { if (size == elemData.length) { Object[] newArray = new Object[ 2 * elemData.length + 1]; System.arraycopy(elemData,0,newArray,0,elemData.length); elemData = newArray; } elemData[size++] = object; }
通过索引,get到数组列表中的对象,不过要首先判断是否数组越界
public void rangeCheck(int index) { if (index < 0 || index >= size) try { throw new Exception(); } catch (Exception e) { e.printStackTrace(); } }
public Object get(int index) { rangeCheck(index); return elemData[index]; }
通过传入的对象来查找数组中匹配的对象
遍历数组,用每一个objec来测试是否equals,如果是,就返回
如果不存在在数组里,就返回null
public Object get(Object object) { for (int i = 0; i < size; i++) { if (elemData[i].equals(object)) return elemData[i]; } return null;```
通过索引index来remove
首先要判断index是否越界
其次找到那个位置,remove
remove用Arraycopy,使得能够覆盖且让后面的向前进一位
最后,将原来的最后一个为止置空,size-1
public void remove(int index) { rangeCheck(index); int numberMoved = size - index - 1; if (numberMoved > 0) System.arraycopy(elemData,index + 1 ,elemData,index,numberMoved); elemData[--size] = null;//把原来的最后一个位置置空,而且大小-1 }
remove根据传入的object,进行匹配删除
首先遍历数组,如果找到,remove
remove依然用ArrayCopy的方法进行覆盖,移动
依然要置空原来的最后一个位置,大小-1
如果没有匹配的,则返回null
public void remove(Object object) { for (int i = 0; i < size; i++) { if (get(i).equals(object)) { remove(i); } } }
set根据索引替换掉该位置的元素
public void set(int index, Object object) { rangeCheck(index); elemData[index] = object; }
add,根据index在此位置添加元素
利用ArrayCopy,复制index之后的元素到从index + 1 的位置开始,然后将index位置的元素替换掉,大小+1
相关文章推荐
- JAVA--自己实现ArrayList
- 自行实现ArrayList(底层结构数组)--Java版
- java中把list列表转为arrayList以及arraylist数组截取的简单方法
- JAVA实现自己的数组栈和链表栈
- java集合——数组列表(ArrayList)+散列集(HashSet)
- java中数组列表ArrayList的使用
- yii中实现数组分页(用yii自带控件实现自己定义列表分页)
- 自己实现的数组列表
- 自己理解的java.util.ArrayList(二)实现类
- 【java】数组/列表排序功能的两种实现
- java实现列表、集合与数组之间转化的方法
- Java中SJBArrayList自己简单实现ArrayList
- Java之实现自己的ArrayList与LinkedList
- 自己用java实现LinkList和arrayList
- 【java集合】自己实现简易的ArrayList
- java 从零开始,学习笔记之基础入门<数组列表(ArrayList)>(九)
- java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】
- 数据结构—顺序表(自己实现Java的ArrayList)
- Java容器—— 「通过数组实现自己的ArrayMap」
- 自己实现的动态数组(java.util.Vector)