java-数据结构

来源:互联网 发布:redis批量查询数据 编辑:程序博客网 时间:2024/06/16 18:38

用java语言来实现动态数组中的数据增加,创建一个Myarraylist 的类,在类中用对象Object创建一个长度为0的动态数组,并且定义初始值为0的整型num (num为动态数组中数据个数),数据在不知道什么类型采用泛型(E)

代码如下:

Java代码  收藏代码
  1. public void Myarraylist<E>{  
  2.     Object [] src = new Object[0];  
  3.     int num = 0;  
  4. }  

 在类Myarraylist 写入带有参数(E  e)的增加数据方法(add):

Java代码  收藏代码
  1. public void add(E e){  
  2.       
  3. }  

 增加数据是将数据按顺序放入动态数组中,在增加数据过程中,数组需要增加容量,所以在add方法中先创建一个临时的动态数组长度为原数组src的长度再加上1:src.length+1    数组为dest[src.length+1],将原数组暂时复制到新数组dest[src.length+1],再把要增加的数据(e)放入增加长度的dest[src.length+1]数组的最后一位,再把dest数组赋给src 数组,数据数量num++ 代码如下:

Java代码  收藏代码
  1. public void add(E e){  
  2.     Object[] dest = new Object[src.length+1];  
  3.     System.arrayCopy(src,0,dest,0,src.length);  
  4.     dest[src.length] = e;  
  5.     src = dest;  
  6.     num ++;  
  7. }  

 

写入带有1个参数的delete方法,依据参数下标index删除动态数组中数据,将原数组要删除的数据下标index后面的数据从index开始开始放到原数组中,前面方的数据位置都不变,数据数量num--.代码如下:

Java代码  收藏代码
  1. public void delete(int index ){  
  2.     System.arraycopy(src,index+1,src,index,num-index-1);  
  3.     num<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 1.5; background-color: white;">--</span><span style="font-size: 1em; line-height: 1.5;">;</span>  
Java代码  收藏代码
  1. }  

 

插入方法insert(int index, E e)带有2个参数,通过参数确定在哪个位置(index)插入哪个数据(e),而插入数据则类似于增加数据,需要开辟新的数组内存来存放,所以数组src长度和数量都发生改变,插入数据需要判断下标是否越界,可以做个判断后抛出异常。也可以判断数据数量和数组长度,如果数量大于数组长度则需要扩充数组长度。代码如下:

Java代码  收藏代码
  1. public void insert (int index,E e){  
  2.    //  if(index<0||index>=num){  
  3.          throw new IndexOutOfBoundsException("下标越界"+index+"size"+num);  
  4.      }//  
  5.      if (num >= src.length) {  
  6.             // 增加数组容量  
  7.             Object[] dest = new Object[src.length + zengliang];  
  8.             // 将原数组的数据拷贝到新数组  
  9.             System.arraycopy(src, 0, dest, 0, src.length);  
  10.             src = dest;  
  11.         }  
  12.      System.arraycopy(src,index,src,index+1,num-index);  
  13.      src[index] = e;  
  14.      num++;  
  15. }  

 

 修改数据方法modify()比较简单,只要得到修改的下标,将数据修改为(e),但是要对下标做出判断 代码如下:

Java代码  收藏代码
  1. public void modify(int index,E s){  
  2.         if(index<0||index>=num){  
  3.             throw new IndexOutOfBoundsException("下标越界"+index+"size"+num);  
  4.         }  
  5.         src[index]=s;  
  6.     }  

 

还需要返回数组中的数据数量num 代码如下:

Java代码  收藏代码
  1. public int size() {  
  2.         return num;  
  3.     }  

 获得数组中的数据 代码如下:

Java代码  收藏代码
  1. public E get(int index ){  
  2.         return (E) src[index];  
  3.     } 

文章转自:上硅谷博客

0 0