葵恩的学习笔记

导航

集合框架

1、ArrayList

  以数组实现,继承AbstractList,实现了List接口。基于数组实现容量大小的动态变化。

  允许NULL存在。同时还实现了 RandomAccess、Cloneable、Serializable 接口,所以ArrayList 是支持快速访问、复制、序列化的。

  ArrayList中的操作不是线程安全的,建议在单线程中使用ArrayList。

  源码分析详见:https://www.cnblogs.com/skywang12345/p/3308556.html

 

  ArrayList是非线程安全的,换句话说,多个线程可以同时进入一个ArrayList进行add方法。

  借助Collection.synchronizedList可以把ArrayList转换为线程安全的List。

  与此类似的,还有HashSet,LinkedList,HashMap等等非线程安全的类,都通过工具类Collections转换为线程安全的。

2、LinkedList

  以链表实现。

3、二叉树

4、HashMap

5、Collection与Collections

6、ArraytList 与 HashSet 的联系与区别

7、ArrayList 与LinkedList 的联系与区别

8、HashMap 与 HashTable 的联系与区别

  二者都实现了Map接口,都是键值对保存数据的方式。

  区别:1、HashMap可以存放null,Hashtable不能存放null;

     2、HashMap不是线程安全的类,Hashtable是线程安全的类。

9、StringBuffer与StringBuilder的区别

StringBuffer是线程安全的,StringBuilder是非线程安全的

所以当进行大量字符串拼接操作的时候,如果是单线程就用StringBuilder会更快些,如果是多线程,就需要用StringBuffer 保证数据的安全性

非线程安全的为什么会比线程安全的 快? 因为不需要同步嘛,省略了些时间 

posted on 2021-02-05 17:21  葵恩  阅读(48)  评论(0)    收藏  举报