java中的数组在声明的的时候都会要求输入数组的的大小,有的时候在事先会不知道要加入的东西的大小,那我们怎么定义数组的大小呢,定多大合适呢,这就成为一个难题。其实Java中的集合会解决这个问题,但它是怎么解决的呢?
下面我将要说的自定义队列,跟java中的ArrayList的实现差不多,它能够优化数组定义时固定长度的不足。
自定义队列将要实现的基本功能:
1.添加对象
2.获取指定位置对象
3.遍历整个队列
4.删除指定位置的对象
5.修改指定位置的对象
6.获取队列的大小
思想:简单地说就是创建两个数组,第二个数组的长度比第一个数的长度大1,把第一个数组中的对象赋给第二个数组,然后在第二个数组的最后加入新添加的对象,然后再把第二个数组赋给第一个数组,这就能够让你想加多少对象到数组里边都行了,数组的大小会根据你加入对象的多少来改变。
代码:
<script src="https://code.csdn.net/snippets/287454.js" type="text/javascript"></script>
集合中的一些重点内容:
java中的集合类:(基本功能:增添,删除,修改,查询,显示(遍历))
1.List: ArrayList,LinkedList,Vector,stack(栈)
2.Map: HashMap,Hashtable,TreeMap
3.Set: HashSet,TreeSet
4.Queue: Queue接口
List特点:有序的,可重复的
Set特点:无序的,不可重复的
ArrayList:几个基本方法:size()大小,add()增添,remove()删除,get()查询
LinkedList:与ArrayList的相比几个特有的方法:addFirst()从前面添加,addLast()从后边添加
Vector:与ArrayList差不多,只不过Vector是同步的,ArrayList是异步的
Stack:add()添加的时候是往前添加的
HashMap:是以“键--值”对的形式存储的,它不允许键的值相同(如果键的值相同,后添加的值会覆盖前边的值),键的值是唯一的,不过HashMap有一个不足之处:HashMap的遍历是没有顺序的(并不是你先存进去就先取出来),HashMap的遍历要用到Iterator(迭代器)。
HashMap与Hashtable的区别:
1.同步性:
HashMap是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的,但是同步的要求会影响到执行的效率。简单地说,如果有多个线程同时访问修改Hashtable,Hashtable会让后进的线程排队等待,前面的访问完成后,后面的才能去访问,但同时访问HashMap的话,HashMap没有这种安全机制,就会使HashMap中的数据产生脏数据。
2.值:
HashMap可以让你将空值作为一个表的条目的Key或Value,但是Hashtable是不能放入空值的。
ArrayList与Vector的区别:
同步性:
Vector是同步的,ArrayList是异步的。
数据增长:
Vector缺省情况下自动增长原来的一倍的数组长度,ArrayList是原来的50%
总结:
1.线程安全:Vector,Hashtable
2.不要求线程安全:ArrayList,LinkedList,HashMap
3.键值对:HashMap,Hashtable
4.数据量很大、线程安全:Vector
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
队列的数组实现,用C++写的,适合初学者。
栈队列串数组
常见的数据结构(栈、队列、数组、链表和红黑树) 数组和链表.pdf
java 自定义Queue队列 java 自定义Queue队列
队列关于数组与链表的实现, linux c语言
c++ 队列数组实现,这个简单的东西。队列的数组实现
java数组实现循环队列。包括入队, 出队,输出队列。 队列先入先出。
NULL 博文链接:https://128kj.iteye.com/blog/1665616
循环链表队列的代码实现 循环数组队列的代码实现
更好了解数组和队列在C++应用开发当中使用,明白C++的变量内存结构。
配套代码讲解:https://blog.csdn.net/songchuwang1868/article/details/90200251 ...同步队列-无锁队列-循环数组无锁队列 同步队列-无锁队列-循环数组无锁队列 同步队列-无锁队列-循环数组无锁队列
线性表(顺序表、链表、静态链表、三元组)、栈(双栈、共享栈)、队列(任务调度、循环队列、双向队列、链队列)、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法、KMP优化算法)、树(先序遍历、线索...
易语言源码易语言自定义数据类型的内存存储方式.rar 易语言源码易语言自定义数据类型的内存存储方式.rar 易语言源码易语言自定义数据类型的内存存储方式.rar 易语言源码易语言自定义数据类型的内存存储方式.rar ...
java实现队列(数组结构)(csdn)————程序
数组、链表、堆栈和队列、线性表和顺序表 数组和链表.pdf
数据结构课件 线性表 单链表 栈和队列 串 数组和广义表 树和二叉树 C语言版 有大量程序代码
自定义Operation队列简单实现直播礼物动画
自定义的C++队列类,可以建立队列,Push元素,枚举元素等
2)若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指的数中组元素中,否则无法存入数据。rear==maxSize-1[队列满] 环形队列 1)front变量的含义做一个调整:front就指向队列的第一个元素,也就是说...
由数组实现队列,包括队列的创建、入队和出队。通过打印显示出队的结果。正在学习数据结构的童鞋可以参考。