`

Java数组队列总结

阅读更多
数组队列的总结
1.数组的优点和缺点
数组有哪些优点:1.存取方便   2.查找速度快 
数组的缺点:1.长度固定   2.存储的数据类型是固定的。

2.数组队列的实现思路
1.对象名中存储的是什么内容?
对象名中存储的是地址。
int [] array = new int[0];
array = new int[1];
GC(垃圾回收机制),自动销毁没有使用的对象,释放内存空间。(析构函数)
1.借助于对象名中存储的地址,每一次创建一个新的数组,是原始数组的长度加1或者长度减1.
2.原始数组中存储的数据,存入到新数组中,然后再去添加新的元素或者不需要添加

3.数组队列的实现步骤
1.定义一个接口,在接口中定义抽象方法。
这是本人写的一个接口:
package ctong03;

import java.util.Collection;

public interface MyArrayList<E> {
public void  add(E e);//  将指定的元素添加到此列表的尾部。
public void add(int index,E element);// 将指定的元素插入此列表中的指定位置。
public void clear();//  移除此列表中的所有元素
public E get(int index);// 返回此列表中指定位置上的元素。
public int indexOf(Object o);//返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
public void isEmpty();//如果此列表中没有元素,则返回 true
public int lastIndexOf(Object o);// 返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。
public void remove(int index);//         移除此列表中指定位置上的元素。
public void remove(Object o)  ;//  移除此列表中首次出现的指定元素(如果存在)。
public E set(int index, E element);// 用指定的元素替代此列表中指定位置上的元素。
public  int size()  ;//                返回此列表中的元素数。
}
2.定义一个类,实现接口,重写接口中的抽象方法。
3.在类中定义一个原始数组和数组的元素总数属性。
4.实现添加元素的方法
a.新建一个数组,数组的长度是原始数组的长度加1。
b.将原始数组中的内容复制到新数组中。
c.将要添加的元素添加到新数组的最后一位。
d.将新数组名中存储的地址赋给原始数组名。
5.实现删除元素的方法
和第四步是类似的。
6.获取元素的总数呢?
添加元素的时候,元素总数属性加1;删除元素的时候,元素总数属性减1;返回元素总数属性值
7.查找对应的元素方法
a.判断索引是否在下标允许的范围之内。
b.数组[下标]的方式直接获取元素。

package ctong03;

import java.util.Collection;

public class MyArrayListImpl<E> implements MyArrayList<E> {
public int size;
public Object array[] =new Object[size];//定义一个原始数组
public MyArrayListImpl(){
// array = new Object[0];
}
public MyArrayListImpl(int size){
// array = new Object[size];
}

public void add(E e) {
Object newarray[]=new Object[size+1];//定义一个新数组,且数组大小为原始数组大小加1
for(int i =0;i<size;i++){  //将原数组的内容复制到新数组上
newarray[i]= array [i];
}
newarray[size]=e;//为新数组的最后一个位置添加新元素
array=newarray;//两个数组交换首地址
// newarray=array;
size++;
}

public void add(int index, E e) {
Object newarray[]=new Object[size+1];//定义一个新数组,且数组大小为原始数组大小加1
for(int i=0;i<index;i++){ //将前面未改变的元素按照次序复制到新数组
newarray [i]= array [i];
}
newarray[index]=e;//在index位置插入新元素
for(int i=index+1;i<size+1;i++){//将原始数组的剩余的元素按次序复制到新数组的index后
newarray[i]= array [i-1];
}
size++;
array=newarray;//两个数组交换首地址
}


public void clear() {
size=0;
for(int i =0;i<size;i++){
array[i]=null;
}
}

public E get(int index) {
if (index>=0 && index <size){//给用户输出的数字规定范围
return(E)array[index];//返回指定位置的元素
}else {
return null;//超出范围则返回空
}
}


public int indexOf(Object obj) {
for(int i=0;i<size;i++){
if(array[i]==obj){
return i;
}
}

return -1;

}


public void isEmpty() {
// int count=0;
// for(int i =0;i<size;i++){
// if(array[i]==null){
// count++;
//
// }}if(count==size-1){
if(size==0)
System.out.println("你的数组为空");

else{
System.out.println("你的数组不为空");
}
}

public int lastIndexOf(Object obj) {
int count=0;
for(int i=size-1;i>=0;i--){//从数组的倒序方向来判断是否有元素与输入元素相等
if(array[i]== obj){
count = i;
}

else return -1;
}
return count; //返回该元素最后一次出现的索引
}

public void remove(int index) {
Object newarray[]=new Object[size-1];//定义一个新数组,且数组大小为原始数组大小加1
for(int i =0;i<index;i++){  //将原数组的内容复制到新数组上
newarray[i]= array [i];
}
for(int i=index+1;i<size-1;i++)
newarray[i-1]=array[i];//为新数组的最后一个位置添加新元素
array=newarray;//两个数组交换首地址
// size-=size;
// newarray=array;
size--;

}

public void remove(Object obj) {
Object newarray[]=new Object[size-1];//定义一个新数组,且数组大小为原始数组大小加1
for(int i=0;i<size;i++){
if(array[i].equals(obj)){
for(;i<size-1;i++){
array[i]=array[i+1];
}
for(int j =0;j<size-1;i++){
newarray[j]=array[j];
array=newarray;//两个数组交换首地址
size--;
}
}
}

}

public E set(int index, E e) {
array[index]=e;
return null;
}

public int size() {
return size;
}
@Override
public boolean addAll(Collection<? extends E> c) {
// TODO Auto-generated method stub
return false;
}


}




4.Java的泛型
泛型   表示符号是E
E可以表示Java中的任意一种数据类型。

分享到:
评论

相关推荐

    用数组实现的优先队列(JAVA)

    在Java中,我们可以使用数组来实现优先队列。这篇文章将探讨如何利用数组实现优先队列,并通过提供的`PriorityQ.java`文件来深入理解其实现原理。 1. **优先队列基本概念** 优先队列是一种数据结构,它维护了一个...

    数组队列学习代码:队列和环形队列

    普通队列 1)将尾指针往后移:rear+1,当front==rear【空】 2)若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指的数中组元素中,否则无法存入数据。rear==maxSize-1[队列满] 环形队列 1)front变量的...

    同步java之数组与队列

    本文将深入探讨这两个概念,并结合给定的`Array.java`文件,分析其可能包含的Java数组和队列的实现。 首先,数组是最基本的数据结构之一,它允许存储固定数量相同类型的数据。在Java中,数组通过`[]`符号定义,例如...

    java数组_java_java数组_

    Java数组是Java编程语言中的基本数据结构之一,它允许我们存储多个同类型的元素在一个单一的变量中。数组的使用在程序设计中至关重要,因为它提供了一种高效、有序的方式来管理和访问数据。下面将深入探讨Java数组的...

    Java数组队列概念与用法实例分析

    Java数组队列是一种基于数组实现的线性数据结构,它遵循先进先出(FIFO,First In First Out)的原则。在Java中,数组队列通常用于处理数据的顺序处理,例如任务调度、消息传递等场景。以下是关于Java数组队列的一些...

    Java数组相关的例子代码

    本篇将深入探讨Java数组的相关知识点,并通过实际的例子代码来加深理解。 1. **数组的声明与初始化** 在Java中,我们可以声明一个数组并同时初始化它。例如,创建一个包含5个整数的数组: ```java int[] ...

    用数组实现的循环队列(java)

    本篇文章将探讨如何在Java中使用数组实现一个循环队列,通过阅读《用数组实现的循环队列(java)》这篇博文,我们可以深入理解循环队列的工作原理以及其在实际编程中的应用。 循环队列是队列的一种变体,它巧妙地...

    基于Java数组实现循环队列的两种方法小结

    基于Java数组实现循环队列的两种方法小结 本文讲解了基于Java数组实现循环队列的两种方法,旨在帮助读者更好地理解循环队列的实现机理和设计思想。循环队列是一种特殊的队列结构,能够充分利用数组的存储空间,避免...

    数组实现循环队列

    java数组实现循环队列。包括入队, 出队,输出队列。 队列先入先出。

    数组循环队列.rar

    在普通数组队列中,一旦队列满或空,需要进行数组的重新分配,而循环队列则避免了这个过程,提升了性能。 在编程语言中,如C、C++、Java或Python,我们可以用不同的方式实现数组循环队列。例如,在C++中,可以定义...

    java数组练习与学习

    Java数组是Java编程语言中的基本数据结构之一,它允许存储同一类型的多个元素。在Java中,数组是一种对象,可以容纳相同类型的数据项序列。数组的大小在创建时必须指定,并且在程序运行过程中不可更改。这个练习和...

    java数组知识点详解带你快速掌握数组的使用

    Java数组是程序设计中的基本概念,它是一种存储同类型元素集合的数据结构。在这个知识点详解中,我们将深入探讨Java数组的创建、初始化、访问以及数组相关的操作。 首先,我们来看看如何创建一个Java数组。在Java中...

    java大作业用数组进行队列排序

    现在,你已经掌握了使用Java数组进行排序和动态插入元素的基本知识。在实际编程时,可以结合这些概念完成题目所要求的大作业。当然,具体实现还需要考虑到错误处理、用户输入验证等细节,以确保程序的健壮性和用户...

    java数组的知识点简述

    Java数组是程序设计中基础且重要的概念,它允许我们存储同一类型的多个数据项在一个单一的结构中。在Java中,数组是一种对象,可以容纳固定大小的同类型元素序列。了解和掌握Java数组的相关知识点对于任何Java程序员...

    Java-用数组实现栈-队列-线性列表

    Java 数组实现栈、队列和线性列表 Java 是一种广泛使用的编程语言,数组是 Java 中的一种基本数据结构。数组可以用来实现栈、队列和线性列表等数据结构。下面是使用 Java 数组实现栈、队列和线性列表的详细介绍。 ...

    JAVA数组学习教程

    【JAVA数组学习教程】 在Java编程中,数组是一种基础且重要的数据结构,它允许程序员存储一组具有相同类型的元素。数组的使用是程序设计中的常见环节,尤其对于初学者来说,理解数组的概念和操作至关重要。 首先,...

    java队列实现(顺序队列、链式队列、循环队列)

    在Java中,可以使用数组配合索引来模拟循环队列。需要注意的是,循环队列需要处理两种特殊状态:空队列和满队列。判断队列是否为空,通常看队首和队尾是否指向同一位置;判断队列是否已满,需要考虑数组大小和队列...

    java数组-基于java实现的环形缓冲数组.zip

    环形缓冲数组的设计灵感来自于环形队列,它提供了一种在有限空间内循环存放元素的方式,具有先进先出(FIFO)的特性。 环形缓冲数组的基本概念是数组的首尾相连,形成一个闭合的环。当数组填满时,新的元素会覆盖旧...

    java 将二维数组顺时针,逆时针排序

    在Java编程中,二维数组是一种常见的数据结构,用于表示矩阵或棋盘等二维空间的数据。在某些场景下,我们可能需要对二维数组进行特定的排序,例如顺时针排序或逆时针排序。顺时针排序意味着从数组的左上角开始,沿着...

Global site tag (gtag.js) - Google Analytics