慢慢人生路,学点Jakarta基础-集合类
动态改变内存
因为数组在存储之前需要先申请一块连续的内存空间并且在编译的收就必须确定好它的空间大小,在运行时控件的大小无法再随着需求的改变而改变,极易出现越界的情况,数据少时又会造成内存空间浪费。
主要一下几种:
List结构集合类:(有序可重复)
ArrayList类 LinkedList类 Vector类 stack类
map结构集合类:键值对(键唯一,值不唯一)
HashMap类 Hashtable类
set结构集合类:无序不可重复
HashSet类 TreeSet类

HashMap和Hashtable的区别:
相同点:
两者都属于Java的集合类,可以用来存放Java对象
区别:
根源:Hashtable基于陈旧的Dictionary类,HashMap是Java1.2引进的Map接口的一个实现。
同步性:Hashtable是同步的,这个类中的一些方法保证了Hashtable中的对象是安全的 ,而HashMap是异步的,因此HashMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以当不要求线程安全的集合,HashMap是不错的选择,这样可以避免由于同步带来的不必要的性能开销,从而能大大提高效率。
值:HashMap可以存放空值,key或者value可以为空;Hashtable是不能放入空值的(null)。
ArrayList和Vector的区别:
相同点:
ArrayList与Vector都属于Java的集合类,可以用来存放Java对象
区别:
同步性:Vector是同步的,这个类中的一些方法保证了Vector中的对象是安全的 ,而ArrayList是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以当不要求线程安全的集合,ArrayList是不错的选择,这样可以避免由于同步带来的不必要的性能开销,从而能大大提高效率。
数据增长:
ArrayList和Vector早内部实现机制上都是使用数组(Array)来空值集合中的对象。当添加元素的时候,如果元素的数目超出了内部数组目前的长度他们都需要扩展内部数组的长度,Vector在缺省情况下默认自动增长原来一倍的数组长度,而ArrayList是原来的50%。因此最终获取的集合所占的控件总是比你实际需要的要打。所以如果你要在集合中保存大量数据时建议使用Vector,可以通过设置集合的初始化大小来避免不必要的资源开销。
小结:
Java为我们提供了这些集合类,在后面编程中是相当有用的,具体什么时候用什么,需要根据分析集合的区别进行选取。
①线程安全用Vector、Hashtable
②非线程安全:ArrayList、LinkedList、HashMap
③键值对:HashMap、Hashtable
④数据量大且考虑线程安全:Vector
慢慢人生路,学点Jakarta基础-集合类的更多相关文章
- 漫漫人生路-学点Jakarta基础-Java8新特性 Stream/Lambda
背景 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk dat ...
- 慢慢人生路,学点Jakarta基础-JavaDoc标记
本文对使用Maven工程构建Jenkinsjob时遇到的问题进行一下分析汇总. JavaDoc标记使用问题 一般Maven项目都有配置产生Java DOC,但是在Jenkins里面产生DOC会有一些严 ...
- 慢慢人生路,学点Jakarta基础-深入剖析Java的接口和抽象类
在java面向对象编程的,抽象类和接口始终存在有疑问的地方,因为两者太多相似有太多不同,在刚开始学习的时候经常弄的不对,使用情景搞混,今天来总结之前学习Java中接口和抽象类的问题. 抽象类 了解:只 ...
- 漫漫人生路,学点Jakarta基础-重写(覆盖)、重载
首先我们现在开始进入Jakarta的时代,由原甲骨文易主到 Eclipse基金会下,但是不想舍弃java名字,因此基金会重新投票选出了Jakarta EE(雅加达).但是我们明白换汤汤不换药的道理,基 ...
- 漫漫人生路,学点Jakarta基础-Java8函数式编程
接口默认方法 Java8版本以后新增了接口的默认方法,不仅仅只能包含抽象方法,接口也可以包含若干个实例方法.在接口内定义实例方法(但是注意需要使用default关键字) 在此定义的方法并非抽象方法,而 ...
- JavaSE基础:集合类
JavaSE基础:集合类 简单认识类集 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 而要向存储多个对象,就不能是 ...
- 小白学Docker之基础篇
系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的 ...
- 7天学完Java基础之0/7
笔记-7天学完Java基础之0/7 1.常用命令提示符(cmd) 启动:Win+R,输入cmd
- 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发
简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...
随机推荐
- 08:Challenge 1
总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 262144kB 描述 给一个长为N的数列,有M次操作,每次操作是以下两种之一: (1)修改数列中的一个数 (2)求 ...
- BZOJ5017 炸弹(线段树优化建图+Tarjan+拓扑)
Description 在一条直线上有 N 个炸弹,每个炸弹的坐标是 Xi,爆炸半径是 Ri,当一个炸弹爆炸时,如果另一个炸弹所在位置 Xj 满足: Xi−Ri≤Xj≤Xi+Ri,那么,该炸弹也会被 ...
- 四舍五入VS银行家舍入法
在学习python的时候,遇见了一个颠覆了我传统观念的四舍五入. 看下面,round()的结果和我们以前根深蒂固的四舍五入是不同的. >>> round(0.5) 0 >> ...
- POJ 3869 Headshot
Headshot Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: 3 ...
- COGS——T 8. 备用交换机
http://www.cogs.pro/cogs/problem/problem.php?pid=8 ★★ 输入文件:gd.in 输出文件:gd.out 简单对比时间限制:1 s 内存 ...
- Java 反射经常用法演示样例
<pre name="code" class="java">import java.lang.reflect.Constructor; import ...
- android-继承BaseAdapter--自己定义适配器,getView运行多次的解决方法
定义的getView运行多次的ListView布局: <ListView android:id="@+id/lv_messages" android:layout_width ...
- 鸟哥的Linux私房菜-----15、例行性命令at与crontab
- 仿即刻app"猜你喜欢"切换控件
最近在即刻里看到即刻的"猜你喜欢"的板块,觉得效果很赞. 当点击"换一换"时,上面三个条目程序切换效果,并且三个条目的切换以不同的速度进行. 于是开始想办法撸出 ...
- matlab 常用机器学习算法的实现
1. KNN 分类 load fisheriris X = meas; Y = species; % 3 分类问题 % 通过训练集进行训练 Mdl = fitcknn(X, Y, 'NumNeighb ...