手动实现ArrayList
2016-03-11 21:28
357 查看
public interface List { public void insert(int i,Object obj)throws Exception; public void delete(int i)throws Exception; public Object getData(int i)throws Exception; public int size(); public boolean isEmpty(); } 顺序表: 顺序表插入一个元素需要移动元素的平均次数为n/2次,删除一个元素需要移动元素次数为(n-1)/2,所以顺序表的时间复杂度为O(n)。 顺序表的实现如下 package com.nishizhen.list; public class SeqList implements List{ final int defaultSize = 10; int maxSize;//顺序表的最大长度 int size;//线性表当前长度 Object[] listArray;//存储线性表元素的数组 public SeqList(int size){ initiate(size); } public SeqList(){ initiate(defaultSize); } public void initiate(int sz){ maxSize = sz; size = 0; listArray = new Object[sz]; } public void insert(int i,Object obj)throws Exception{ if(size == maxSize){ throw new Exception("顺序表已满,不能再插入元素。"); } if(i<0 || i>maxSize){ throw new Exception("参数有误。"); } else{ for(int j=size;j>=i;j--){ listArray[j] = listArray[j-1]; } listArray[i] = obj; size++; } } public void delete(int i)throws Exception{ if(size == 0){ throw new Exception("顺序表为空,无法进行删除元素操作。"); } if(i<0 || i>=size){ throw new Exception("参数出错。");//数组下标不能小于0或者大于size,因为size及其以后的元素为空。 } else{ for(int j=size-1;j>=i;j--){ listArray[j-1] = listArray[j]; } listArray[listArray.length-1] = ""; size--; } } public Object getData(int i)throws Exception{ if(size == 0){ throw new Exception("顺序表为空,无法返回元素。"); } if(1<0 || i>=size){ throw new Exception("参数出错。");//数组下标不能小于0或者大于size,因为size及其以后的元素为空。 } else{ return listArray[i]; } } public int size(){ return listArray.length; } public boolean isEmpty(){ boolean flag = false; if(listArray.length==0){ flag = true; } return flag; } }
相关文章推荐
- UIPickerView简单应用
- (15) PHP 随笔---LAMP Linux基本操作 对文件、目录的操作
- 2.简单求和[递归法]
- simd 双线性插值
- opencv配置之非配置文件版
- 服务器select模型
- 【CS229 lecture19】微分动态规划
- javascript在html中的加载顺序
- (14) PHP 随笔---LAMP Linux基础
- (13) PHP 随笔---Smarty模板引擎 缓存的高级应用 22
- 如何用虚拟机装SQL Server
- 在Fragment中OnActivityResult方法中接收Activity中返回的值
- 如何用虚拟机装SQL Server
- CallableStatement 的用法
- 经典迷宫问题DFS 深度优先
- parentNode、parentElement,childNodes、children 它们有什么区别呢?
- (12) PHP 随笔---Smarty模板引擎 单模板多缓存、局部不缓存 20--21
- DOM 对元素添加属性 setAttribute
- Click&Clean App(保护私人数据)
- Linux 字符设备驱动开发基础(二)—— 编写简单 PWM 设备驱动