java 队列 array_JAVA之数组队列

packagexxj.datastructure0810;importjava.util.Random;public classDataStructure {/***@paramargs*/

public static voidmain(String[] args) {

String [] array= {"1","2","3"};

MyArrayList mal = new MyArrayListImpl();//mal.add(100);//mal.add(new Object());

for(int i=0;i

mal.add(array[i]);

}

Random rand= newRandom();int size = rand.nextInt(20);for(int i=0;i

mal.add(""+((char)(rand.nextInt(26)+97)));

}

System.out.println("size = "+size);for(int i=0;i

System.out.println(mal.get(i));

}

}

}

packagexxj.datastructure0810;/*** 自定义数组队列的接口,同时使用表示该接口支持泛型*/

public interface MyArrayList{/*** 添加元素到数组队列中的方法

*@parame要添加的元素*/

public voidadd(E e);/*** 向数组队列中指定的位置插入一个新的元素

*@paramindex要插入元素的所在的索引位置

*@parame要插入的新元素

*@return返回true表示插入成功,返回false表示插入失败*/

public boolean add(intindex,E e);/*** 根据指定的索引位置,从数组队列中移除一个元素

*@paramindex要移除元素所在的索引位置

*@return返回null表示移除失败,否则会返回移除的元素*/

public E remove(intindex);/*** 移除指定的元素

*@parame要移除的元素

*@return返回值true表示执行成功,返回false表示执行失败*/

public booleanremove(E e);/*** 修改指定索引位置的元素

*@paramindex要修改元素的位置

*@parame新的元素

*@return返回值true表示执行成功,返回false表示执行失败*/

public boolean update(intindex,E e);/*** 修改指定元素的内容

*@paramoldE要修改的元素

*@parame新的元素

*@return返回值true表示执行成功,返回false表示执行失败*/

public booleanupdate(E oldE,E e);/*** 获取数组队列中存储的元素总数

*@return返回数组队列中存储的元素总数属性*/

public intsize();/*** 获取指定索引位置的元素

*@paramindex要获取元素的索引位置

*@return返回null表示获取失败,否则会返回获取到的元素*/

public E get(intindex);

}

packagexxj.datastructure0810;/*** 定义数组队列的实现类,该类实现了MyArrayList接口

*

*@author熊哥

**/

public class MyArrayListImpl implements MyArrayList{//声明一个数组名

privateObject[] array;//声明一个记录存储元素总数的属性名

private intsize;/*** 构造方法*/

publicMyArrayListImpl() {

array= new Object[1];

}//public MyArrayListImpl(int i){//array = new String[i];//}

/*** 添加元素到数组队列中的方法

*

*@parame要添加的元素*/

public voidadd(E e) {if (size == 0)

array[0] =e;else{//根据所添加元素的的个数来创建新的数组,新数组的长度是size+1

Object[] newArray = new Object[size + 1];//将新元素str添加到newArray数组的末尾

newArray[size] =e;//将原始数组中的数据存入到新数组中

for (int i = 0; i < size; i++) {

newArray[i]=array[i];

}//新数组的地址赋给原始数组

array =newArray;

}//记录元素总数增加1.

size++;

}/*** 向数组队列中指定的位置插入一个新的元素

*

*@paramindex要插入元素的所在的索引位置

*@parame要插入的新元素

*@return返回true表示插入成功,返回false表示插入失败*/

public boolean add(intindex, E e) {return false;

}/*** 根据指定的索引位置,从数组队列中移除一个元素

*

*@paramindex要移除元素所在的索引位置

*@return返回null表示移除失败,否则会返回移除的元素*/

public E remove(intindex) {return null;

}/*** 移除指定的元素

*

*@parame要移除的元素

*@return返回值true表示执行成功,返回false表示执行失败*/

public booleanremove(E e) {return false;

}public booleanremoveAll(E e) {return false;

}/*** 修改指定索引位置的元素

*

*@paramindex要修改元素的位置

*@parame新的元素

*@return返回值true表示执行成功,返回false表示执行失败*/

public boolean update(intindex, E e) {return false;

}/*** 修改指定元素的内容

*

*@paramoldE要修改的元素

*@parame新的元素

*@return返回值true表示执行成功,返回false表示执行失败*/

public booleanupdate(E oldE, E e) {return false;

}/*** 获取数组队列中存储的元素总数

*

*@return返回数组队列中存储的元素总数属性*/

public intsize() {returnsize;

}/*** 获取指定索引位置的元素

*

*@paramindex要获取元素的索引位置

*@return返回null表示获取失败,否则会返回获取到的元素*/

public E get(intindex) {if (index < 0 || index >=size)return null;return(E)array[index];

}

}

1.数组:

数组是属于数据结构中的一种线性结构。

数据对象在内存中的储存方式是一种线性结构。

数组定义的方式:

数据类型 [] 数组名 = new 数据类型[长度];

数据类型 [] 数组名 = {数据,...};

数据类型 [] 数组名 = new 数据类型[]{数据,...};

数据类型 [] 数组名;

数组名 = new 数据类型[长度];

数组名 = new 数据类型[]{数据,...};

//错误示范

数组名 = {数据,。。。}

数据类型 [][] 数组名 = new 数据类型[行][列];

数据类型 [][] 数组名 = {{数据,...},...};

数组是否是一个类?

是的

数组是类,那么肯定提供了属性和方法,那么数组有哪些属性和方法呢?

数组只有一个唯一的length属性,该属性是用来获取数组长度

获取或设置一维数组中某一个位置的数据:数组名[下标]

获取一维数组能存储多少个元素:数组名.length

获取或设置二维数组中某一个位置的数据:数组名[行下标][列下标]

获取二维数组的行数:数组名.length

获取二维数组的列数:数组名[行下标].length

获取二维数组能存储多少个元素:

数组名.length*数组名[行下标].length //不适用于所有情况

数组名[行下标].length+...

除了0可以直接给数字之外,其他的都通过length来获取

数组下标只会从0开始。

2.数组队列

1.数组有什么优点和缺点?

优点:

存取数据是所有数据结构中速度最快的一种,你在获取或设置数据时,

可以直接通过下标定位。

缺点:

如果你要存储的数据不确定时,数组在创建时需要给予的长度就是缺点。

1.创建数组小了,存储不下数据

2.创建数组大了,浪费内存空间

如果在项目中特定情况下只能存储一种数据类型;在项目的两一个位置

需要存储N种数据类型;这样数组在创建时需要指定固定的类型就会是缺点。

2.数组队列的实现

数组队列的实现原理:借助于数组名中存储的是数组对象在内存中的首地址。

interface MyArrayList.java 父接口,定义数组中所需要实现的方法

class MyArrayListImpl.java 子类,实现接口中所有的抽象方法。

使用泛型来解决第二个问题。

泛型是Java中的一种特殊符号,不能把它当做任何一个种数据类型。

但是它可以泛指Java所有的数据类型(基本数据类型,引用类型)。

Java中的泛型有E(元素)、K(键)、V(值)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值