1.数组与集合的区别 1.1 数组开始声明了类型,而集合不会 1.2 数组开辟的空间是静态的,集合是动态的 1.3 数组只能存放相同类型的数据,集合可以存放不同类型的数据(Object类的子类都可以) 1.4 但是数组比集合块,特指执行的方法速度。 2.集合框架概述 1.collection框架 List(add,remove,contains和size) 元素可以重复
- ArrayList
-
- 线程不安全,底层是数组,查得快,增删慢
- CopyOnWriteArrayList
解决arrayList线程不安全,在插入数据时copy一个数组作为缓存,而且可以读取。实时性差。
- Vector
-
- 线程安全,底层是数组,查得快,增删慢
- LinkedArrayList
-
- 线程不安全,底层是链表,查得慢,增删快
Set(add,remove,contains和size)
元素不重复
- HashSet
-
- 保证元素不重复,依靠equals和hashCode
- TreeSet
-
- 保证元素不重复,依靠红黑树排序
2.Map框架
Key->Value的形式
- HashMap(线程不安全)
-
- 保证元素不重复,依靠equals和hashCode
数据结构是数组+链表+红黑树组成,其中当当个链表大小不超过8位时,是数组加链表,否则转换为红黑树。
负载因子默认是0.75,数组容量每次扩容1倍,扩容的阀值=数组大小*负载因子。
- comcurrentHashMap(线程安全,高效)
-
- 使用分段式的线程加锁,将整个结构分段加锁,锁为链表头,并发量为分段数量。
- HashTable(线程安全)
-
- 保证元素不重复,依靠equals和hashCode
- TreeMap
-
- 保证元素不重复,依靠红黑树排序
3.集合框架的常用方法
boolean add(Object o)
添加一个元素到集合里面
boolean addALl(Collection c)
添加一整个集合元素到集合里
boolean remove(Object o)
到集合里面删除一个元素(arrylist里只删除一个)
boolean removeAll(Collection c)
删除所以集合中包含的元素,相同的元素全部删除,删除一个就返回ture。
boolean contain(Object o)
判断集合是否包含一个元素
boolean containAll(Collection c)
判断集合是否包含一整个集合的元素
boolean retainAll(Collection c);
只保留与集合相同的元素,即交集。boolean的意思是集合与原先相比是否发生了变化。