技术文章-数组与队列

在Java编程中,常常会遇到需要存储和处理大量同类信息的时候,这时候就要运用数组或者队列的数据存储结构来方便操作。

1.数组

定义:数组是属于数据结构中一种线性的数据结构,因为其对象在内存中的存储方式是一个连续的存储空间。

数组在使用时的书写格式:(以一维数组为)

定义和实例化对象同步进行:

已知存储数据的类型和长度时:数据类型 [] 数组名 = new 数据类型[长度];

已经知道具体的每一项数据时:数据类型 [] 数组名 = {数据,...};

已经知道具体的每一项数据同时规定数据类型时:数据类型 [] 数组名 = new 数据类型[]{数据,...};

先定义再实例化对象:

定义:数据类型 [] 数组名;

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

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

特殊的二维数组书写方式:

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

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

数组是一个Java中已经定义好的类,但是这个类只有一个length属性,没有方法。

Length这个属性是用来定义数组长度的。所以在定义数组时,一定要事先定义好其长度。

在获取或者设置一维数组具体的某个位置的数据时,就要使用该书写格式:数组名[下标]

另外,如果一个数组没有特殊的规定,数组的下标是从0开始的。所以其编号是从0到length-1但是一个数组中能存储元素的最大量是由length决定:数组名.length。

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

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

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

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

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

数组名[行下标].length+… 而不是简单的行数*列数,因为定义二维数组时,每一列的长度可以不同。

同时注意:在数组的操作中,除了0是直接给的数字之外,其他的都通过length来获取。同时数组下标只会从0开始。

数组的优点和缺点?

优点:

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

可以直接通过下标定位。

缺点:

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

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

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

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

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

2.数组队列

从数组中可以知道,要使用一个数组,就必须知道其长度,同时数组中所有数据的类型都是统一的,如果需要存储不同数据类型的数据,并且不知道数据量的大小时,就可以使用数组队列。

数组队列的实现原理:借助于数组名中存储的是数组对象在内存中的首地址。也就是说如果加入或者删除了数据,就新建一个新的数组,先修改改动的内容,再将没改动的内容复制过来。

Java中包含了自己定义好的ArrayList类,但是如果需要自己定义一个类时可能需要用到的接口和类:

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

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

Object类是所有类的父类,所以利用Object就可以实现在ArrayList中存储任意类型的数据,但是如果使用者又想要规定一个ArrayList的数据类型时,就需要使用泛型<E>。

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

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

例如:

public interface MyArrayList<E>{

}

<E>就代表的是泛型,E的类型决定了该ArrayList的数据类型

Java中的泛型有E(元素)、K(键)、V(值)。 K、V在实现五子棋的hash表中有过运用。

时间: 2024-11-01 17:32:40

技术文章-数组与队列的相关文章

2017上半年技术文章集合【Android】—184篇文章分类汇总

地址: http://blog.csdn.net/androidstarjack/article/details/77923753 声明 | 本文是于亚豪 原创 终端研发部 前言: 2017年已经过大半,公众号里技术文章整理和归类了一下,方便给大家查找和阅读.这也是目前 发文的一个统计. View篇: 高级UI特效之酷炫抢红包金币下落动画 一个超级方面的用户指引view-App实现用户指引就是如此简单 让View像粒子一样自由运动 手把手教你实现RecyclerView实现上拉刷新功能 高级UI

《鸡啄米C++编程入门系列》系列技术文章整理收藏

<鸡啄米C++编程入门系列>系列技术文章整理收藏 收藏整理鸡啄米C++编程入门系列文章,供个人和网友学习C++时参考 1鸡啄米:C++编程入门系列之前言 2鸡啄米:C++编程入门系列之一(进制数) 3鸡啄米:C++编程入门系列之二(原码.反码与补码) 4鸡啄米:C++编程入门系列之三(VS2010的使用介绍) 5鸡啄米:C++编程入门系列之四(数据类型) 6鸡啄米:C++编程入门系列之五(运算符和表达式) 7鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构) 8鸡啄米:C++编程入

爬取知名社区技术文章_分析_1

软件运行环境是什么? python 3.50                                      -- 解释器 scrapy库                                         -- 爬虫框架 pymsql库                                         -- 连接mysql数据库 pillow库                                           -- 下载图片 目标网站是什么

《PHP内核探索系列文章》系列技术文章整理收藏

<PHP内核探索系列文章>系列技术文章整理收藏 PHP内核探索系列文章收藏夹收藏有关PHP内核方面的知识的文章,对PHP高级进阶的朋友提供PHP内核方面的知识点探讨 1PHP内核探索:从SAPI接口开始 2PHP内核探索:一次请求的开始与结束 3PHP内核探索:再次探讨SAPI 4PHP内核探索:Apache模块介绍 5PHP内核探索:Zend引擎 6PHP内核探索:多进程/线程的SAPI生命周期 7PHP内核探索:单进程SAPI生命周期 8PHP内核探索:一次请求生命周期 9PHP内核探索:

《PHP框架ThinkPHP学习》系列技术文章整理收藏

<PHP框架ThinkPHP学习>系列技术文章整理收藏 1修改ThinkPHP缓存为Memcache的方法 2Thinkphp实现MySQL读写分离操作示例 3ThinkPHP调用百度翻译类实现在线翻译 4使用ThinkPHP+Uploadify实现图片上传功能 5Thinkphp使用mongodb数据库实现多条件查询方法 6ThinkPHP实现多数据库连接的解决方法 7改写ThinkPHP的U方法使其路由下分页正常 8ThinkPHP实现将SESSION存入MYSQL的方法 9ThinkPH

开发技术文章收集

1. SQL Server存储过程创建和修改(4207) 2. 百度编辑器UEditor常用设置函数大全(2501) 3. SoSoft项目之C# WinForm托盘图标实例(2469) 4. C# WinForm创建包含备注的快捷方式实例(2141) 5. .NET配置文件读写实例(附SosoftConfigHelper类)(2084) 6. SoSoft项目之向WinForm添加声音资源并控制播放实例(1756) 7. 高效率去掉js数组中重复项(1273) 8. 使用Visual Stud

《PHP实用函数手册》系列技术文章整理收藏

<PHP实用函数手册>系列技术文章整理收藏 1PHP函数补完:error_reporting()http://www.lai18.com/content/425520.html 2PHP函数补完:get_magic_quotes_gpc()http://www.lai18.com/content/425521.html 3PHP函数补完:isset()http://www.lai18.com/content/425514.html 4PHP函数补完:array_multisort()http:

《Artech的WCF剖析系列》系列技术文章整理收藏

<Artech的WCF剖析系列>系列技术文章整理收藏 1控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[下篇] 2使命必达: 深入剖析WCF的可靠会话[实例篇](内含美女图片,定力差者慎入) 3使命必达: 深入剖析WCF的可靠会话[概念篇] 4WCF如何克服HTTP传输协议的局限提供对不同消息传输模式的实现 5WCF中并发(Concurrency)与限流(Throttling)体系深入解析系列[共7篇] 6使命必达: 深入剖析WCF的可靠会话[协议篇](上) 7使命必达:

《浅谈JavaScript系列》系列技术文章整理收藏

<浅谈JavaScript系列>系列技术文章整理收藏 1浅谈JavaScript中面向对象技术的模拟 2浅谈javascript函数劫持[转自xfocus]第1/3页 3浅谈javascript 面向对象编程 4老鱼 浅谈javascript面向对象编程 5浅谈javascript的数据类型检测 6浅谈Javascript嵌套函数及闭包 7根据一段代码浅谈Javascript闭包 8浅谈JavaScript编程语言的编码规范 9浅谈Javascript面向对象编程 10浅谈JavaScript