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("]");
	}
}

时间: 2024-10-08 01:01:41

Java数据结构学习系列之——数组(1)的相关文章

深入Java集合学习系列:HashMap的实现原理

参考文献 引用文献:深入Java集合学习系列:HashMap的实现原理,大部分参考这篇博客,只对其中进行稍微修改 自己曾经写过的:Hashmap实现原理 1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的).此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 2. HashMap的数据结构: 在ja

深入Java集合学习系列:LinkedHashMap的实现原理

1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变.   LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表.此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序.   注意,此实现不是同步的.如果多个线程同时访问链接的哈希映射,而其中至少一个线

转:深入Java集合学习系列:HashSet的实现原理

0.参考文献 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null元素.HashSet中不允许有重复元素,这是因为HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value中的值都是统一的一个private static final Object PRESENT

java数据结构学习(一)之二分查找

  二分查找法与我们在孩童时期玩过的猜数的游戏一样,这个游戏里一个朋友会让你猜他正想的一个1至100的数,当你猜了一个数后,他会告诉你三种选择的一个:你猜的比她想的大,或小,或猜中了.为了能用最少的次数猜中,必须从50开始猜,如果她说你猜的太小,则推出那个数在51-100之间,所以下一次猜75((51+100)/2),如果她说有些大,那你就会在51-74之间才,下一次猜(51+74)/2=62.直到猜中她所给的数. 下面给出我们猜1-100的数,key为33的过程: 只需7次就可以猜中答案.下面

java数据结构学习之—Collection接口

Collection接口代表一组对象,这组对象称为它的元素,有些实现(如链表)是无序的,有些实现(集合和映射)是有序的,有些实现是允许重复的,而有些实现不允许重复,从java5开始,Collection接口和整个集合类API都使用泛型,所有容器都支持一下操作: 1.boolean isEmpty() 如果容器不包含任何元素,则返回true,否则返回false. 2.int size() 返回容器中元素的个数 3.boolean add(AnyType x) 将项X添加到容器中,如果操作成功,则返

Java数据结构学习—Collections类

java.util 类 Collections java.lang.Object java.util.Collections public class Collections extends Object 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成.它包含在 collection 上操作的多态算法,即"包装器",包装器返回由指定 collection 支持的新 collection,以及少数其他内容. 如果为此类的方法所提供的 colle

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

Java命令学习系列(7):Javap(转)

原文出处: Hollis(@Hollis_Chuang) javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码. 一般情况下,很少有人使用javap对class文件进行反编译,因为有很多成熟的反编译工具可以使用,比如jad.但是,javap还可以查看java编译器为我们生成的字节码.通过它,可以对照源代码和字节码,从而了解很多编译器内部的工作. 实例 javap命令分解一个class文件,它根据options来决定到底输出什么.如果没有使用options,那么

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必