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

  • Java EE 

  •  集合框架

ArrayList

  1. 手写ArrayList, 了解ArrayList源码。
  2. ArrayList实质上是一个Object数组。所谓数组就是连续的。
  3. System.arraycopy操作来代替for循环可以减少复杂度
  4. 数组初始大小为10,以1.5倍的大小速度增加。
  5. 注意remove(Object o)操作需要重写equals()方法
  6. 。。。

Vector

  1.  与ArrayList大差不大,只是线程安全(同步的)。
  2. 注意扩容是原来的2倍。
  3. 。。。

HashMap

  1. 有数组+链表+红黑树构成,根据key值通过hash函数算出再数组中的索引,链表法解决冲突,红黑树优化。
  2. 初始大小为16,扩容2倍,负载因子为0.75。
  3. 关于其中的一些遍历。
  4. 允许null作为键值。
  5. 。。。

Hashtable

  1. 与HashMap大差不差,只是线程安全(同步的)。
  2. 不允许null作为键值。
  3. 初始大小为11,扩容2倍+1,负载因子为0.75.
  4. 。。。

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

  1. 一个接口,实现比较方法。
  2. 排序时使用。
  3. 。。。

Set

  1. HashSet本质是HashMap,但是无索引,无顺序,不重复
  2. TreeSet是有序的,且可自定义比较方法
  3. 遍历是无序的,遍历方法基本由两种
  4. 。。。

循环集合的几种方法

  1. for(int i=0; i<size; i++)
  2. iterator
  3. for( : )
  4. X.foreach((p) - >System.out.println(p))

Collection和Collections的区别

  1. Collections是集合工具类,并不属于集合,是用来操作集合的工具类

  2. Collection是集合类的上级接口,继承于他的接口主要有Set 和List.

  3. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作(同1)

 

posted @ 2023-07-05 13:57  K1_KCY  阅读(13)  评论(0)    收藏  举报