Java集合类的笔记
来源:互联网 发布:淘宝店铺转让出售 编辑:程序博客网 时间:2024/06/01 13:38
Vector、ArrayList、LinkedList
Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe)ArrayList的方法不是线程安全的,ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组。由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它在性能上和ArrayList有很大的差别。
从上面的分析可知,在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能
而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
HashTable,HashMap,HashSet
HashTable和HashMap采用相同的存储机制,二者的实现基本一致,不同的是:
1)、HashMap是非线程安全的,HashTable是线程安全的,内部的方法基本都是synchronized。2)、HashTable不允许有null值的存在。在HashTable中调用put方法时,如果key为null,直接抛出NullPointerException。其它细微的差别还有,比如初始化Entry数组的大小等等,但基本思想和HashMap一样。
HashSet:
1、HashSet基于HashMap实现,无容量限制。2、HashSet是非线程安全的。 3、HashSet不保证有序。
HashMap:
1、HashMap采用数组方式存储key,value构成的Entry对象,无容量限制。2、HashMap基于Key hash查找Entry对象存放到数组的位置,对于hash冲突采用链表的方式来解决。3、HashMap在插入元素时可能会要扩大数组的容量,在扩大容量时须要重新计算hash,并复制对象到新的数组中。4、HashMap是非线程安全的。5、HashMap遍历使用的是Iterator
HashTable
1、HashTable是线程安全的。2、HashTable中无论是Key,还是Value都不允许为null。
TreeSet,TreeMap
TreeSet:
1、TreeSet基于TreeMap实现,支持排序。 2、TreeSet是非线程安全的。
从对HashSet和TreeSet的描述来看,TreeSet和HashSet一样,也是完全基于Map来实现的,并且都不支持get(int)来获取指定位置的元素(需要遍历获取),另外TreeSet还提供了一些排序方面的支持。例如传入Comparator实现、descendingSet以及descendingIterator等。
TreeMap:
1、TreeMap是一个典型的基于红黑树的Map实现,因此它要求一定要有Key比较的方法,要么传入Comparator实现,要么key对象实现Comparable接口。2、TreeMap是非线程安全的。
0 0
- Java集合类的笔记
- Java集合类笔记
- JAVA集合类笔记
- java集合类笔记
- java-集合类 笔记
- 我的笔记:精通JAVA集合类
- 我的java笔记(集合)
- java 集合的使用笔记
- 疯狂java笔记:关于java的集合类
- JAVA集合类(笔记)
- java集合类学习笔记
- java 集合类学习笔记
- java 集合类使用笔记
- Java集合类学习笔记
- Java集合类学习笔记
- java复习笔记---集合类
- Java常用集合类的常用方法 学习笔记
- Java笔记——集合类:List的用法
- 软件定时器
- 专题六-函数(C语言的核心)
- 文章标题 计算机的启动过程(详细)
- jQuery插件开发二
- 管理实践不是标准化作业
- Java集合类的笔记
- js 比较日期类的大小
- mysql 编译安装
- idea webStorm 报错 Unescaped xml character 解决方案之一
- 520. Detect Capital
- magento2 命令行安装
- smmu学习笔记之streamtable
- GitHub的进击
- Alexnet网络结构