集合框架
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 保证数据的安全性
非线程安全的为什么会比线程安全的 快? 因为不需要同步嘛,省略了些时间
浙公网安备 33010602011771号