利用数组实现ArrayList
来源:互联网 发布:手写笔 软件 编辑:程序博客网 时间:2024/06/05 22:40
/**
* 自己实现的ArrayList,加深对ArrayList的理解
*/
public class MyArrayList {
private Object[] elementData;
private int size;
// 返回大小public int size() {return size;}// 判断是否为空public boolean isEmpty() {return size == 0;}public MyArrayList() {this(10);}public MyArrayList(int initialCapacity) {if (initialCapacity < 0) { try { throw new Exception("初始化出错!"); } catch (Exception e) { e.printStackTrace(); }}elementData = new Object[10];}public void add(Object o) {ensureCapacity();elementData[size] = o;size++;}// 根据下标获得元素public Object get(int index) {rangeCheck(index);return elementData[index];}// 根据下标删除元素public void remove(int index) {rangeCheck(index);int nubMoved = size-index-1;if(nubMoved>0){ //System.arraycopy(elementData, index+1, elementData, index, nubMoved); for(int i=index;i<elementData.length-1;i++){ elementData[i]=elementData[i+1]; }}elementData[--size]=null;//垃圾回收}// 根据对象删除元素public void remove(Object o) {for(int i=0;i<elementData.length;i++){ if(elementData[i].equals(o)){//未重写equals方法,用的是== remove(i); }}}// 范围检查public void rangeCheck(int index) {if (index < 0 || index > size) { try { throw new Exception("范围出错"); } catch (Exception e) { e.printStackTrace(); }}}private void ensureCapacity() {// 数组扩容和数据的拷贝if (size == elementData.length) { Object[] newArray = new Object[size * 2 + 1]; System.arraycopy(elementData, 0, newArray, 0, elementData.length); elementData = newArray;}}//指定位置添加元素,原位置元素移位public void add(int index,Object o){rangeCheck(index);ensureCapacity();System.arraycopy(elementData, index, elementData, index+1,elementData.length-index);elementData[index] = o;size++;}//指定位置添加元素,原位置元素返回public Object set(int index,Object o){rangeCheck(index);Object old = elementData[index];elementData[index] = o;return old;}public static void main(String[] args) {MyArrayList list = new MyArrayList();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");System.out.println(list.size);System.out.println(list.get(0));list.remove(0);System.out.println(list.size);}
}
0 0
- 利用数组实现ArrayList
- ArrayList类的实现,利用数组存储元素
- 利用Arraylist数组简单实现随机双色球Demo
- 用数组实现ArrayList
- 动态数组的实现-ArrayList
- 利用串行化实现ArrayList深拷贝
- JAVA ArrayList利用Comparator实现自定义排序
- 利用数组实现双端栈
- asp实现ArrayList(数组操作类)
- 数组线性表ArrayList的内部实现
- 用数组来实现表(ArrayList)
- C 实现泛型ArrayList数组
- c语言数组实现ArrayList部分函数
- Java -- 自己实现数组列表(Arraylist)
- 数组ArrayList
- ArrayList数组
- 数组、ArrayList
- 利用数组实现队列操作
- 解决:64位的电脑装VirtualBox新建虚拟电脑都是32位的系统
- 知乎精选:如何提高团队凝聚力和执行力 (转)
- 鸡啄米vc++2010系列17(字体对话框)
- JDBC-常见异常
- Spring官网下载dist.zip的四种方法
- 利用数组实现ArrayList
- 分布式SQL数据库引擎基于Hadoop HDFS-王伟珣
- 对于foreach循环的使用
- ssh免密码登陆
- InstallShield 2013 应用笔记(一)
- sql sever 三种分页方式效率的简单测试
- SublimeText3安装Package Control
- 如何让自己变得更优质?
- oracle 为 用户 解锁 加锁 (以hr为例)