用数组来实现表(ArrayList)
来源:互联网 发布:java循环#拼接字符串 编辑:程序博客网 时间:2024/05/16 17:31
数组实现的表find(ith)操作只需花费O(1),但是插入和删除的花费却需要昂贵的开销,这要看插入在什么地方,最坏的情况下,在为置0插入(即在表的前端插入)首先需要 将整个数组后移一位,而删除第一个元素则需要将整个数组向前移动一个位置,这两种最坏的情况的花费为O(N)。
表的代码如下:
测试以上代码:
5 3 7 7 90
3 7 7 90
3 7 98 90
表的代码如下:
public class MyArrayList<T> {public static final int DEFAULT_CAPACITY=10;private int size;private T[] items;public void clear(){size=0;ensureCapacity(DEFAULT_CAPACITY);}public MyArrayList(){clear();}public boolean isEmpty(){return size==0;}public int size(){return size;}public void add(T x){add(size,x);}public T get(int idx){if(idx>=size || idx<0){throw new ArrayIndexOutOfBoundsException();}return items[idx];}public void set(int idx,T x){if(idx>=size || idx<0){throw new ArrayIndexOutOfBoundsException();}items[idx]=x;}public void remove(int idx){for (int i = idx; i < size-1; i++){items[i]=items[i+1];}size--;}private void add(int idx,T x){if(items.length==size()){ensureCapacity(size*2+1);}for (int i = size; i >idx; i++){items[i]=items[i-1];}items[idx]=x;size++;}public void ensureCapacity(int newCapacity){if(newCapacity<=size){return;}T[] old=items;items=(T[])new Object[newCapacity];for (int i = 0; i < size; i++){items[i]=old[i];}}}
测试以上代码:
public class Text{public static void main(String[] args){MyArrayList<Integer> list=new MyArrayList<Integer>();list.add(5);list.add(3);list.add(7);list.add(7);list.add(90);for (int i = 0; i <list.size() ; i++){System.out.print(list.get(i)+" ");}System.out.println();list.remove(0);for (int i = 0; i < list.size(); i++){System.out.print(list.get(i)+" ");}list.set(2, 98);System.out.println();for (int i = 0; i < list.size(); i++){System.out.print(list.get(i)+" ");}}}输出为:
5 3 7 7 90
3 7 7 90
3 7 98 90
0 0
- 用数组来实现表(ArrayList)
- 用数组实现ArrayList
- 数组线性表ArrayList的内部实现
- 利用数组实现ArrayList
- java用ArrayList集合来实现斗地主发牌案例
- 动态数组的实现-ArrayList
- 数组线性表ArrayList
- 数组线性表ArrayList类(运用与API实现)
- 用函数指针数组来实现计算器
- C用数组来实现栈管理
- asp实现ArrayList(数组操作类)
- C 实现泛型ArrayList数组
- c语言数组实现ArrayList部分函数
- Java -- 自己实现数组列表(Arraylist)
- 表-ArrayList的实现
- java-集合(4)-用LinkedList来实现栈/队列-ArrayList和LinkedList比较
- java用数组模拟实现ArrayList以及一些常用方法实现
- 100 事件 [~IE8] 用数组来保存传统事件 通过数组来实现按顺序执行
- java篇 【8】由Java封装性引出的联想
- 【2012 Semifinal 1】 YetAnotherNim
- 【转载,百科】size_t,神奇的类型
- 字符串拆分-Java
- python连接数据库设置
- 用数组来实现表(ArrayList)
- 找出360云盘的离线下载
- 【转载,排版标色】size_t为何这么重要?
- linux查看用户操作历史
- VirtualBox在Linux中无法打开虚拟机解决办法
- 电商52个专业名词解释大汇总
- 路由器设置成交换机
- java中的tryCatch之
- SpriteBuilder中子节点的相对位置(%百分比定位)