`
junzai
  • 浏览: 14441 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

数组与队列,队列与泛型

阅读更多
数组与队列的特点,区别,及应用场景
数组:长度一旦定义就不能改变,并且在内存中的地址是连续的。
队列:在允许的范围内,长度可以根据需要而改变,类型也可以改变。缺点是只能放入一个种类(或其子类)的对象。于是我们可以通过定义一个队列了来改变队列的类型。
泛型:不知道队列的类型或者想改变队列的类型时使用。
队列:
主类:
/**
* 自定义队列类(动态数组)
* 长度可以改变,但只能存整数
* 增加,得到,修改,删除,插入元素,得到长度
* @author Administrator
*
*/
public class MyList {

//定义一个长度为0的原始数组
private int[] src = new int[0];



/**
* 将指定的数据放入队列容器中
*
* @param num
*            要放入队列容器的数据
*/
public void add(int num) {
//定义一个新数组,长度是原始数组长度+1
int dest[] = new int[src.length+1];

//将新元素放入新数组最后一个下标位置
dest[src.length] = num;
//将原始数组中的元素按照下标顺序拷贝到新数组
for(int i=0;i<src.length;i++){
dest[i] = src[i];
}

//将原数组名指向新数组
src = dest;
}

/**
* 取出指定下标位置的元素
*
* @param index
*            要取出的元素的下标
* @return 返回取得的元素
*/
public int get(int index) {
//得到src对应下标的元素
int num = src[index];
return num;
}

/**
* 删除指定位置的元素
*
* @param index
*            要删除的元素的下标
*/
public void delete(int index) {
//定义一个新数组,长度是原始数组长度-1
int dest1[] = new int[src.length-1];

//将原始数组中的元素按照下标顺序拷贝到新数组
for(int i=0;i<dest1.length;i++){
dest1[i] = src[i+1];
}

//将原数组名指向新数组
src = dest1;

}

/**
* 将指定位置的元素修改为指定的值
*
* @param index
*            要修改的元素的下标
* @param num
*            修改之后的新值
*/
public void modify(int index, int num) {
src[index] = num;
}

/**
* 在指定的位置插入指定的元素值
*
* @param index
*            要插入元素的位置
* @param num
*            要插入的元素
*/
public void insert(int index, int num) {

}

/**
* 得到容器中元素个数的方法
*
* @return 返回容器中的元素个数
*/
public int size() {
//队列长度就是src数组的当前长度
int len = src.length;
return len;
}

}

测试类:
/**
* 队列测试类
*
* @author Administrator
*
*/
public class ListTest {

public static void main(String args[]) {

// 创建一个队列对象
MyList list = new MyList();

// 放入10个元素
for (int i = 0; i < 10; i++) {
list.add(i*100);
}


//在增加一个
//list.add(10000);
list.delete(2);
//list.modify(0, 1234);

//遍历
for(int i=0;i<list.size();i++){
//根据下标取出元素
int num = list.get(i);
System.out.println(num);
}






}

}





泛型:
主类:
/**
* 自定义队列类(动态数组)
* E: 表示容器中将要存放的数据类型,没有确定是什么类型,是泛指一种类型
* @author Administrator
*
*/
public class MyListFan<E> {

//定义一个长度为0的原始数组
//将数组定义为Object数组,表示能存放Java中所有的对象
private Object[] src = new Object[0];



/**
* 将指定的数据放入队列容器中
*
* @param e
*            要放入队列容器的数据
*/
public void add(E e) {
//定义一个新数组,长度是原始数组长度+1
Object dest[] = new Object[src.length+1];

//将新元素放入新数组最后一个下标位置
dest[src.length] = e;
//将原始数组中的元素按照下标顺序拷贝到新数组
for(int i=0;i<src.length;i++){
dest[i] = src[i];
}

//将原数组名指向新数组
src = dest;
}

/**
* 取出指定下标位置的元素
*
* @param index:要取出的元素的下标
*           
* @return 返回取得的元素
*/
public E get(int index) {
//得到src对应下标的元素,强制转型
E e = (E) src[index];
return e;
}

/**
* 删除指定位置的元素
*
* @param index
*            要删除的元素的下标
*/
public void delete(int index) {

}

/**
* 将指定位置的元素修改为指定的值
*
* @param index:要修改的元素的下标
*           
* @param num:修改之后的新值
*           
*/
public void modify(int index, E e) {
src[index] = e;
}

/**
* 在指定的位置插入指定的元素值
*
* @param index:要插入元素的位置
*           
* @param e:要插入的元素
*           
*/
public void insert(int index, E e) {

}

/**
* 得到容器中元素个数的方法
*
* @return 返回容器中的元素个数
*/
public int size() {
//队列长度就是src数组的当前长度
int len = src.length;
return len;
}

}

测试类
/**
* 测试泛型队列
*
* @author Administrator
*
*/
public class ListTest {

public static void main(String args[]) {

// 创建队列,用来存储字符串
MyListFan<String> list = new MyListFan<String>();

//装入元素
for (int i = 0; i < 10; i++) {
String s = "元素" + i;
list.add(s);
}

//遍历
for(int i=0;i<list.size();i++){
//根据下标取出一个元素
String s = list.get(i);
System.out.println(s);
}


}
}
分享到:
评论

相关推荐

    泛型顺序队列和循环队列

    本实例实现了泛型顺序队列和泛型循环队列的基本操作,并通过界面演示了队列中元素的变化,最后结合栈实现了回文字符串的判断,通过本实例可以充分掌握C#队列数据结构。

    C#的6种常用集合类大比拼

    虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的 2.数组要声明元素的类型,集合类的元素类型却...

    delphi 泛型学习实录

    delphi 泛型及原生泛型列表、栈、队列、数组。

    CSharp-Advanced:堆栈和队列,多维数组,高级集合和词典,流,文件和目录,函数式编程,定义类,泛型,迭代器和比较器

    CSharp-Advanced:堆栈和队列,多维数组,高级集合和词典,流,文件和目录,函数式编程,定义类,泛型,迭代器和比较器

    datafall2019:回购样品

    ICOM 4035 / CIIC 4020数据结构2019年秋季 回购在课堂讲课中介绍的代码。... 队列-使用泛型,循环数组和双向链表实现的队列ADT。 map-使用泛型和单链列表实现的地图ADT。 hashtable-使用泛型和哈希表实现的地图ADT。

    数据结构与算法分析Java语言描述(第二版)

    Java51.4.1 使用Object表示泛型1.4.2 基本类型的包装1.4.3 使用接口类型表示泛型1.4.4 数组类型的兼容性1.5 利用Java5泛性实现泛型特性成分1.5.1 简单的泛型类和接口1.5.2 自动装箱/拆箱1.5.3 带有限制的通配符...

    数据结构与算法分析-Java语言描述(第2版)_2_2

    java5 1.4.1 使用object表示泛型 1.4.2 基本类型的包装 1.4.3 使用接口类型表示泛型 1.4.4 数组类型的兼容性 1.5 利用java5泛性实现泛型特性成分 1.5.1 简单的泛型类和接口 1.5.2 自动装箱/拆箱....

    数据结构与算法分析-Java语言描述(第2版)_1_2

    java5 1.4.1 使用object表示泛型 1.4.2 基本类型的包装 1.4.3 使用接口类型表示泛型 1.4.4 数组类型的兼容性 1.5 利用java5泛性实现泛型特性成分 1.5.1 简单的泛型类和接口 1.5.2 自动装箱/拆箱....

    数据结构与算法分析_Java语言描述(第2版)

    3.7.2 队列的数组实现 3.7.3 队列的应用 小结 练习 第4章 树 4.1 预备知识 4.1.1 树的实现 4.1.2 树的遍历及应用 4.2 二叉树 4.2.1 实现 4.2.2 例子:表达式树 4.3 查找树ADT——二叉查找树 4.3.1 contains方法 ...

    leetcode添加元素使和等于-Play-with-Data-Structures:玩转数据结构

    数组队列和循环队列的比较 补充代码1: 不浪费一个空间的循环队列 补充代码2: 没有size成员变量的循环队列 第四章 最基础的动态数据结构:链表 4-1 什么是链表 4-2 在链表中添加元素 4-3 使用链表的虚拟头结点 4-4 ...

    数据结构与算法分析_Java语言描述(第2版)]

    Java51.4.1 使用Object表示泛型1.4.2 基本类型的包装1.4.3 使用接口类型表示泛型1.4.4 数组类型的兼容性1.5 利用Java5泛性实现泛型特性成分1.5.1 简单的泛型类和接口1.5.2 自动装箱/拆箱1.5.3 带有限制的通配符...

    glib-2.0-demo.zip

    GLib包含了字符串操作、文件操作、数据校验、编解码、字符集转换、随机数生成器、命令行解析器、xml解析器、正则表达式、单链表、双链表、 数组、指针数组、双端队列、哈希表、平衡二叉树、N维树、泛型、主循环、多...

    数据结构与算法分析 Java语言描述第2版

    Java51.4.1 使用Object表示泛型1.4.2 基本类型的包装1.4.3 使用接口类型表示泛型1.4.4 数组类型的兼容性1.5 利用Java5泛性实现泛型特性成分1.5.1 简单的泛型类和接口1.5.2 自动装箱/拆箱1.5.3 带有限制的通配符...

    leetcode添加元素使和等于-Play-With-Data-Structures:慕课网学习

    leetcode添加元素使和等于 ...数组队列和循环队列的比较 补充代码1: 没有size成员变量的循环队列 [整理中,敬请期待] 第四章 最基础的动态数据结构:链表 4-1 什么是链表 4-2 在链表中添加元素 4-3 使用链

    手写实现简易ArrayList

    定义一个泛型数组 E[] array; int size; 提供两种初始化方法 java中不支持直接创建泛型需要强转 public ArraysList(int size) { array=(E[])new Object[size]; size=0; } public ArraysList() { array=(E[]) new ...

    Java数据结构与算法中的源代码和applet - 站长下载

    第十五章队列与优先队列 第十六章二叉树 第十七章二叉树的应用 第十八章二叉搜索树 第十九章集与映射 第二十章有序集与映射的实现 第二十一章实现映射的散列法 第二十二章堆 第二十三章位数与文件压缩 第二十四章图...

    datastructure:基于java语言的数据结构及算法实现

    栈和队列2-1 栈的基本实现2-2 栈的另一个应用:括号匹配2-3 数组队列Java2-4 循环队列Java第三章 最基础的动态数据结构:链表章节Java源码3-1 链表的基本实现Java3-2 使用链表实现栈Java3-3 带有尾指针的链表:使用...

Global site tag (gtag.js) - Google Analytics