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;
}
}

手动实现ArrayList的更多相关文章

  1. 理解java容器底层原理--手动实现ArrayList

    为了照顾初学者,我分几分版本发出来 版本一:基础版本 实现对象创建.元素添加.重新toString() 方法 package com.xzlf.collection; /** * 自定义一个Array ...

  2. java学习:ArrayList的实现及原理

    1. ArrayList概述: ArrayList是List接口的可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类还提供一些方法来操作内部 ...

  3. java提高篇(二一)-----ArrayList

    一.ArrayList概述       ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List ...

  4. java集合-ArrayList

    一.ArrayList 概述 ArrayList 是实现 List 接口的动态数组,所谓动态就是它的大小是可变的.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口 ...

  5. Java集合---ArrayList的实现原理

    目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除                 6) 调整数组容量 ...

  6. ArrayList集合的实现原理

    一. ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境 ...

  7. ArrayList实现原理

    转载:http://wiki.jikexueyuan.com/project/java-collection/arraylist.html ArrayList 概述 ArrayList 可以理解为动态 ...

  8. java提高篇---ArrayList

    一.ArrayList概述 ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类 ...

  9. java集合之ArrayList的实现原理

    1. ArrayList概述: ArrayList是List接口的可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类还提供一些方法来操作内部 ...

随机推荐

  1. Spark.ML之PipeLine学习笔记

    地址: http://spark.apache.org/docs/2.0.0/ml-pipeline.html   Spark PipeLine 是基于DataFrames的高层的API,可以方便用户 ...

  2. git学习笔记07-冲突了怎么办-那就解决冲突呗

    比如一个人自己创建了分支feature1进行修改提交之后提交,另一个人在master上修改然后提交. master分支和feature1分支各自都分别有新的提交,变成了这样: 这种情况下,Git无法执 ...

  3. Java中的内省

    为什么要学内省? •开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性.   什么是Ja ...

  4. MVC服务器前台提示

    [HttpPost] public ActionResult AddMsg(MsgModel model) { string strSql = "insert into tbl_msg(ti ...

  5. ie8不支持transform: translateY,ie9支持不友好

    transform: translateY(0);  ie8 不支持这个属性  但是我觉得用css实现的效果特好 特自然 也许是我的脚本写的不够完善 呵呵    现在我希望其他 主流的浏览器应用CSS ...

  6. compile,build和execute的区别

    一个c程序的生成要经历以下步骤: 1.编写文本代码,生成c或cpp文件,这时候它还是文本的: 2.编译,就是compile,由c编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通 ...

  7. [转载] 深入 superviser

    模块简介 新人接触线上的时候一般都会碰到supervise这个工具,导师对这个模块的解释一般就是,这个模块是监控进程,当进程挂掉之后,supervise会将进程启动.这样当进程出 现问题,如因出cor ...

  8. Js获取当前日期时间及格式化操作

    var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1 ...

  9. Android Fragment分页显示的实现

    分页显示有两种方式 一种是使用ViewPager 另一种是使用FragmentTransaction 上代码 1 FragmentTransaction实现方式 public class MainAc ...

  10. a链接onclick="window.location.href=在ie6上面无法执行解决

    <a href="javascript:void(0)" onclick="window.location.href=document.getElementById ...