Java之Collection(集合)

集合&数组的区别

1)数组的长度是固定的。集合的长度是可变的。
2)数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致 

集合分类

Collection和Map,Collection 表示一组对象,Map表示一组映射关系或键值对。 

集合Collection<E>

All Superinterfaces: 
Iterable 

All Known Subinterfaces: 
Deque , List , Queue , Set , SortedSet

所有已知实现类: 
ArrayList,    HashSet,    LinkedList,    Vector,  TreeSet 

增强for循环

for(元素的数据类型  变量 : Collection集合or数组){ 
  	//写操作代码
} 

List集合(子接口)

All Superinterfaces: 
Collection , Iterable 
所有已知实现类: 
ArrayList, LinkedList, Stack, Vector 

List的实现类之ArrayList

  • ArrayLIst特点
ArrayList`集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据
  • ArrayList与Vector的区别
它们的底层物理结构都是数组,我们称为动态数组。

- ArrayList是新版的动态数组,线程不安全,效率高,Vector是旧版的动态数组,线程安全,效率低。
- 动态数组的扩容机制不同,ArrayList扩容为原来的1.5倍,Vector扩容增加为原来的2倍。
- 数组的初始化容量,如果在构建ArrayList与Vector的集合对象时,没有显式指定初始化容量,那么Vector的内部数组的初始容量默认为10,而ArrayList在JDK1.6及之前的版本也是10,而JDK1.7之后的版本ArrayList初始化为长度为0的空数组,之后在添加第一个元素时,再创建长度为10的数组。
- Vector因为版本古老,支持Enumeration 迭代器。但是该迭代器不支持快速失败。而Iterator和ListIterator迭代器支持快速失败。如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的 remove 或 add 方法之外的任何其他方式),则迭代器将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就完全失败,而不是冒着在将来不确定的时间任意发生不确定行为的风险。

List的实现类之LinkedList

  • LinkedList的特点
LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合

  

 

 

 

 

 

 

 

  

 

posted @ 2021-05-20 15:52  亚洲哈登  阅读(49)  评论(0编辑  收藏  举报