在开始这篇博客之前,先要搞懂集合就要先搞清楚他的具体分类:
集合分为Map和Collection两大类 ;
而List与Set是继承自Collection,而Map不是,所以经常将集合分三块:Map,List,Set ;
接着细分:
Map 分为 HashMap 和 TreeMap;
Set 分为 TreeSet 和 HashSet;
List 分为 ArrayList 和 LinkedList ;
一、List :(注意:list中存储的是对象的引用,而不是对象本身)
- 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ];
- 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];
- 所有的List中可以有null元素,例如[ tom,null,1 ];
①ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。
PPT:
②LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。实现 List 接口,能对它进行队列操作。实现java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化去传输。
区别:
ArrayList 底层数据结构是数组 查询快 增删慢 线程不安全 效率高 默认长度是10 超过就会new一个新的数组 50%延长 节省空间 。
LinkedList 底层数据结构是链表(双向链表) 查询慢 增删快 线程不安全 效率高。
List 接口常用方法:
以上多数引用百度百科以及课堂PPT。