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集合数据存储的结构是链表结构。方便元素添加、删除的集合
本文为原创文章,转载请标明出处