黑马程序猿——JAVA基础——集合
ArrayList和Vector功能类似。
Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。
所以Vector在JavaME、Card等各种微小版本号都能够使用,而ArrayList不能
ArrayList不具备线程同步的安全性,但速度较快。
Vector具备线程安全。
Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的。HashMap是Java 1.2引进的Map接口的一个实现。
或许最重要的不同是Hashtable的方法是同步的。而HashMap的方法不是。这就意味着。尽管你能够不用採取不论什么特殊的行为就能够在一个多线程的应用程序中用一个Hashtable,但你必须相同地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法能够让你同步訪问潜在的HashMap。这么做的结果就是当你不须要同步时,你不能切断Hashtable中的同步(比方在一个单线程的应用程序中),并且同步添加了非常多处理费用。
第三点不同是,仅仅有HashMap能够让你将空值作为一个表的条目的key或value。HashMap中仅仅有一条记录能够是一个空的key,但随意数量的条目能够是空的value。这就是说,假设在表中没有发现搜索键,或者假设发现了搜索键,但它是一个空的值,那么get()将返回null。
假设有必要,用containKey()方法来差别这两种情况。
一些资料建议。当须要同步时,用Hashtable,反之用HashMap。可是,由于在须要时,HashMap能够被同步,HashMap的功能比Hashtable的功能很多其它,并且它不是基于一个陈旧的类的,所以有人觉得,在各种情况下,HashMap都优先于Hashtable。
二、对于java集合框架
他们之间的比較:
是否有序 | 是否同意元素反复 | ||
Collection | 否 | 是 | |
List | 是 | 是 | |
Set | AbstractSet | 否 | 否 |
HashSet | |||
TreeSet | 是(用二叉排序树) | ||
Map | AbstractMap | 否 | 使用key-value来映射和存储数据。key必须唯一,value能够反复 |
HashMap | |||
TreeMap | 是(用二叉排序树) |
黑马程序猿——JAVA基础——集合的更多相关文章
- 黑马程序猿————Java基础日常笔记---反射与正則表達式
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...
- 黑马程序猿——————java基础
一.软件开发 软件是什么? 软件是简单的来说,计算机数据和指令的集合,数据(比方年龄,性别).指令及时告诉计算机怎样对他进行处理.计算机但是没有人那么聪明啊! 二.图形化界面(GUI),主要特点就是. ...
- 黑马程序猿——JAVA基础——IO流
----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一. 一.IO流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数 ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- 黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换
------- android培训.java培训.期待与您交流! ---------- 集合框架的工具类: Collections : 集合框架的工具类.里面定义的都是静态方法. Col ...
- 黑马程序员——JAVA基础之Map集合
------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...
- 黑马程序员——JAVA基础之set集合
------- android培训.java培训.期待与您交流! ---------- Set: 元素是无序(存入和取出的顺序不一定一致),元素不可以重复. Set接口中常用的类: ...
- 黑马程序员——JAVA基础之List集合
------- android培训.java培训.期待与您交流! ---------- Collection : |--List:元素是有序的,元素可以重复.因为该集合体系有索引. | ...
随机推荐
- HTML中常用的颜色词汇
white (白色). black(黑色) . blue(蓝色) . green(绿色) .red(红色) .yellow(黄色) . pink(粉色).gray(灰色).brown(棕色). gre ...
- oracle 创建命令
环境变量设置(在Sqlplus中执行) create or replace directory filepath as 'D:\ORACLEBACKUP'; 备份脚本:expdp system/123 ...
- 题解报告:hdu 1848 Fibonacci again and again(尼姆博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1848 Problem Description 任何一个大学生对菲波那契数列(Fibonacci num ...
- 将DataTable某一列的值整体赋值给 另一个DataTable
将 DataTable某一列的值,赋值给 另一个DataTable: DataSet _ds=bll.GetAllList(); //将要取其中一列 DataView view = _ds.Table ...
- HTML链接用法
1.链接的打开方式 ①在新页面打开 <a href="www.baidu.com" target="_blank">百度一下</a> ② ...
- 省市区县的sql语句——省
/*SQLyog v10.2 MySQL - 5.5.48 : Database - 省市县****************************************************** ...
- ubuntu 16.04 安装QT问题
使用 sudo sh ./**.run 有错误: 增加 文件的可运行权限: sudo chmod +x Qt.run 直接运行: ./Qt.run 可完成安装
- (转)Openlayers 2.X加载天地图
http://blog.csdn.net/gisshixisheng/article/details/44621923 概述: 在前面的章节,讲到了Arcgis for js加载天地图,在本节讲述如何 ...
- centos7下安装python3 解决openssl等一系列问题
最近折腾了下centos7,发现按正常方法安装python3.7后面会出现各种操蛋的问题. 主要的问题有三个,openssl版本过低,'_ctypes'缺失,以及安装后sqlite3缺失.下面我会贴出 ...
- vue系列---identify(生成图片验证码)插件
identify 这是一个vue的插件,使用canvas来生成图形验证码. 具体参数如下: identify.vue组件(主要用于定义参数和方法) <template> <div c ...