java-数据结构_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java-数据结构

java-数据结构

 2017/3/11 5:32:26  不见了  程序员俱乐部  我要评论(0)
  • 摘要:用java语言来实现动态数组中的数据增加,创建一个Myarraylist的类,在类中用对象Object创建一个长度为0的动态数组,并且定义初始值为0的整型num(num为动态数组中数据个数),数据在不知道什么类型采用泛型(E)代码如下:publicvoidMyarraylist<E>{Object[]src=newObject[0];intnum=0;}在类Myarraylist写入带有参数(Ee)的增加数据方法(add):publicvoidadd(Ee){
  • 标签:数据结构 Java 数据

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

代码如下:

class="java" name="code">public void Myarraylist<E>{
    Object [] src = new Object[0];
    int num = 0;
}

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

public void add(E e){
    
}

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

public void add(E e){
    Object[] dest = new Object[src.length+1];
    System.arrayCopy(src,0,dest,0,src.length);
    dest[src.length] = e;
    src = dest;
    num ++;
}

?

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

public void delete(int index ){
    System.arraycopy(src,index+1,src,index,num-index-1);
    num--;
}

?

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

public void insert (int index,E e){
   //  if(index<0||index>=num){
         throw new IndexOutOfBoundsException("下标越界"+index+"size"+num);
     }//
     if (num >= src.length) {
			// 增加数组容量
			Object[] dest = new Object[src.length + zengliang];
			// 将原数组的数据拷贝到新数组
			System.arraycopy(src, 0, dest, 0, src.length);
			src = dest;
		}
     System.arraycopy(src,index,src,index+1,num-index);
     src[index] = e;
     num++;
}

?

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

public void modify(int index,E s){
		if(index<0||index>=num){
			throw new IndexOutOfBoundsException("下标越界"+index+"size"+num);
		}
		src[index]=s;
	}

?

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

public int size() {
		return num;
	}

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

public E get(int index ){
		return (E) src[index];
	}

?

发表评论
用户名: 匿名