邹瑞20201009

总结

ArrayList、Vector、LinkedList的区别

相同点:

  1. 都是java
  2. 都是有序、可排序、可重复的集合、可存null。
  3. 都支持迭代器操作。

不同点:

  1. 实现接口不同

    1)ArrayList和Vector未实现Queue接口、Deque接口,不支持队列操作。

    2)LinkedList实现了Queue接口、Deque接口,支持队列操作,同时支持栈操作。

  2. 内部实现不同

    1)ArrayList内部采用数组来存储元素

    2)Vector内部采用数组来存储元素

    3)LinkedList内部采用链表来存储元素

  3. 线程安全

    1)ArrayList非线程安全,适用于单线程环境。

    2)Vector线程安全,适用于多线程环境。

    3)LinkedList非线程安全,适用于单线程环境。

  4. 扩容不同

    1)ArrayListArrayList默认扩充为原来的1.5倍(没有提供方法来设置空间扩充的方法.

    2)Vector默认扩充为原来的两倍(每次扩充空间的大小可以设置)

    3)LinkedList由于采用的是链表,所以不必扩容。

HashMap与Hashtable的区别

相同点:

  1. 两者都实现Map接口,用于存放键值对。
  2. 内部都采用哈希表来实现,都采用哈希算法计算键值对的存放位置

区别:

  1. 是否支持线程安全

    1)HashMap非线程安全,理论上效率较高

    2)Hashtable线程安全,理论上效率较低

  2. 内部实现不同

    1)从jdk 1.8 开始,HashMap内部采用数组+链表+红黑树方式存储(一、当链表长大于8时,会自动转化为红黑树;二、当链表长小于6时,红黑树重新转换为链表)

    2)而Hashtable内部则采用数组+链表实现

  3. 对元素位置计算方法不同
  4. 两者继承的类不同

    HashMap继承Abstract类;Hashtable继承Dictionary类

  5. 是否支持null

    HashMap支持null键和null值;

    Hashtable不支持null键和null值;

  6. 扩容方式

    HashMap初始值为16,2倍增长

    Hashtable初始值为11,2倍+1增长

泛型

语法:类型对象 = new 类型 ();

  1. <>是泛型的特性
  2. E表示某种数据类型,也可以用其他字母代替。在实际使用泛型时,需要用明确的类型替换掉E。

2

3

心得

集合有点难度,学着有点迷,需要整理的东西有点多

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1