复习1(整体阶段和集合框架)
- Java EE

- 集合框架

ArrayList
- 手写ArrayList, 了解ArrayList源码。
- ArrayList实质上是一个Object数组。所谓数组就是连续的。
- System.arraycopy操作来代替for循环可以减少复杂度
- 数组初始大小为10,以1.5倍的大小速度增加。
- 注意remove(Object o)操作需要重写equals()方法
- 。。。
Vector
- 与ArrayList大差不大,只是线程安全(同步的)。
- 注意扩容是原来的2倍。
- 。。。
HashMap
- 有数组+链表+红黑树构成,根据key值通过hash函数算出再数组中的索引,链表法解决冲突,红黑树优化。
- 初始大小为16,扩容2倍,负载因子为0.75。
- 关于其中的一些遍历。
- 允许null作为键值。
- 。。。
Hashtable
- 与HashMap大差不差,只是线程安全(同步的)。
- 不允许null作为键值。
- 初始大小为11,扩容2倍+1,负载因子为0.75.
- 。。。
HashMap与Hashtable的区别(重点)
相同点:
1.HashMap和Hashtable都是java.util包下的类
2.HashMap和Hashtable都实现了Map接口,存储方式都是key-value形式
3.HashMap和Hashtable同时也都实现了Serializable和Cloneable接口
4.HashMap和Hashtable的负载因子都是0.75
5.HashMap与Hashtable的部分方法相同,如put,remove等方法
不同点:
1.HashMap是非线程安全的,Hashtable是线程安全的
2.HashMap允许null作为键或值,Hashtable不允许,运行时会报NullPointerException
3.HashMap添加元素使用的是自定义hash算法,Hashtable使用的是key的hashCode
4. HsahMap在数组+链表的结构中引入了红黑树,Hashtable没有
5. HashMap初始容量为16,Hashtable初始容量为11
6. HsahMap扩容是当前容量翻倍,Hashtable是当前容量翻倍+1
7. HsahMap只支持Iterator遍历,Hashtable支持Iterator和Enumeration
8. HsahMap与Hashtable的部分方法不同,比如Hashtable有contains方法
(87条消息) HashMap和Hashtable的区别_Fluoxetine_Zero的博客-CSDN博客
Comparable
- 一个接口,实现比较方法。
- 排序时使用。
- 。。。
Set
- HashSet本质是HashMap,但是无索引,无顺序,不重复
- TreeSet是有序的,且可自定义比较方法
- 遍历是无序的,遍历方法基本由两种
- 。。。
循环集合的几种方法
- for(int i=0; i<size; i++)
- iterator
- for( : )
- X.foreach((p) - >System.out.println(p))
Collection和Collections的区别
-
Collections是集合工具类,并不属于集合,是用来操作集合的工具类
-
Collection是集合类的上级接口,继承于他的接口主要有Set 和List.
- Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作(同1)

浙公网安备 33010602011771号