首页 > 代码库 > java数据结构系列之——数组(1)

java数据结构系列之——数组(1)

import javax.management.RuntimeErrorException;

public class MyArray {
	private long array[];
	private int elements;//用于记录数组中实际数据的个数
	
	public MyArray(){
		array=new long[50];//数组默认长度为50;
	}
	
	public MyArray(int capacity){//设置数组的默认长度
		array=new long[capacity];
	}
	
	/**
	 * 在数组末尾增加元素
	 */
	public void add(long data){
		if(elements>array.length){
			throw new ArrayIndexOutOfBoundsException();
		}
		array[elements]=data;
		elements++;
	}
	
	/**
	 * 在index处插入元素data
	 */
	public void insert(int index,long data){
		if(index>=array.length||index<0){
			throw new IndexOutOfBoundsException();
		}
		
		if(elements>array.length-1){
			throw new ArrayIndexOutOfBoundsException();
		}
		
		for(int i=elements;i>=index;i--){
			array[i+1]=array[i];
		}
		array[index]=data;
		elements++;
	}
	
	/**
	 * 删除index处的元素
	 * @param index
	 */
	public void delete(int index){
		if(index>=array.length||index<0){
			throw new IndexOutOfBoundsException();
		}
		for(int i=index;i<=elements;i++){
			array[i]=array[i+1];
		}
		elements--;
	}
	
	/**
	 * 删除元素data
	 * @param data
	 */
	public void delete(long data){
		int addr=search(data);
		if(addr==-1){
			System.out.println(data+"不存在");
		}else{
			for(int i=addr;i<=elements;i++){
				array[i]=array[i+1];
			}
			elements--;
		}
	}
	
	/**
	 * 将index处的元素更新为newdata
	 * @param index
	 * @param newdata
	 */
	public void update(int index,long newdata){
		if(index>=array.length||index<0){
			throw new IndexOutOfBoundsException();
		}
		array[index]=newdata;
	}
	
	/**
	 * 查找index处的元素
	 * @param index
	 * @return
	 */
	public long search(int index){
		if(index>=array.length||index<0){
			throw new IndexOutOfBoundsException();
		}
		return array[index];
	}
	
	public int search(long data){
		int i;
		for(i=0;i<=elements;i++){
			if(array[i]==data){
				return i;
			}
		}
		return -1;
	}
	
	/**
	 * 打印数组中的类容
	 */
	public void display(){
		System.out.print("[");
		for(int i=0;i<elements-1;i++){
			System.out.print(array[i]+",");
		}
		System.out.print(array[elements-1]);
		System.out.println("]");
	}
}

java数据结构系列之——数组(1)