数组和List
一.数组Array
1.数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单
2.声明数组的时候,必须同时指明数组的长度,数组的长度过长,会造成内存浪费,数组和长度过短,会造成数据溢出的错误。
3. 数组只能存放类型一样的数据(基本类型/引用类型)
二.集合Collection
1. JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。但是集合可以存放不同类型的引用类型,因为存入集合的元素都被转化成了Object类型,之后再引用集合中的类型需要强制类型转换,这就导致了集合的类型不安全,以及类型转化的性能损耗
三.List (列表)是接口,与Set(集)一起继承了Collection接口, 请注意,Map没有继承Collection接口,Map提供key到value的映射。
线性是一种逻辑结构,数据结构中的除去首尾元素外,其他元素都有唯一的前驱和后继。
1. Set和List的区别:
List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
2. List有三个实现类:ArrayList LinkedList Vector
2.1 ArrayList底层是以数组实现的。
2.2 LinkedList是双向链表实现,适合于经常进行增删操作,但是查询和修改效率没ArrayList、Vector快。
2.3 Vector与ArrayList类似,也是数组实现,但是他是同步的,是线程安全的,不会有并发产生的问题,但是效率要低于ArrayList。