邹瑞20201009
总结
ArrayList、Vector、LinkedList的区别
相同点:
- 都是java
- 都是有序、可排序、可重复的集合、可存null。
- 都支持迭代器操作。
不同点:
- 实现接口不同
1)ArrayList和Vector未实现Queue接口、Deque接口,不支持队列操作。
2)LinkedList实现了Queue接口、Deque接口,支持队列操作,同时支持栈操作。
- 内部实现不同
1)ArrayList内部采用数组来存储元素
2)Vector内部采用数组来存储元素
3)LinkedList内部采用链表来存储元素
- 线程安全
1)ArrayList非线程安全,适用于单线程环境。
2)Vector线程安全,适用于多线程环境。
3)LinkedList非线程安全,适用于单线程环境。
- 扩容不同
1)ArrayListArrayList默认扩充为原来的1.5倍(没有提供方法来设置空间扩充的方法.
2)Vector默认扩充为原来的两倍(每次扩充空间的大小可以设置)
3)LinkedList由于采用的是链表,所以不必扩容。
HashMap与Hashtable的区别
相同点:
- 两者都实现Map接口,用于存放键值对。
- 内部都采用哈希表来实现,都采用哈希算法计算键值对的存放位置
区别:
- 是否支持线程安全
1)HashMap非线程安全,理论上效率较高
2)Hashtable线程安全,理论上效率较低
- 内部实现不同
1)从jdk 1.8 开始,HashMap内部采用数组+链表+红黑树方式存储(一、当链表长大于8时,会自动转化为红黑树;二、当链表长小于6时,红黑树重新转换为链表)
2)而Hashtable内部则采用数组+链表实现
- 对元素位置计算方法不同
- 两者继承的类不同
HashMap继承Abstract类;Hashtable继承Dictionary类
- 是否支持null
HashMap支持null键和null值;
Hashtable不支持null键和null值;
- 扩容方式
HashMap初始值为16,2倍增长
Hashtable初始值为11,2倍+1增长
泛型
语法:类型对象 = new 类型 ();
- <>是泛型的特性
- E表示某种数据类型,也可以用其他字母代替。在实际使用泛型时,需要用明确的类型替换掉E。
心得
集合有点难度,学着有点迷,需要整理的东西有点多
点赞
评论留言