本篇文章为你整理了集合(集合数学知识点)的详细内容,包含有集合竞价什么意思 集合数学知识点 集合竞价成交规则 集合竞价分时图怎么看 集合,希望能帮助你了解 集合。
1.collection接口:单列集合,用来存储一个一个的对象
2. list接口:存储有序的、可重复的数据。 --- "动态数组",替换原有的数组
(1) Arraylist:作为list接口的主要实现类,底层使用Object数组 elementData存储
底层源码分析:
jdk7:
ArrayList list = new ArrayList ();底层创建了一个容量为10的数组
list.add(123)//elementData[0] = new Interger(123);
...
list.add(11)//如果此次导致添加底层elementData数组容量不够,则扩容。默认情况下,扩容为原来容量的1.5倍,同时需要将原有的数组中的数据复制到新的数组中
结论:建议开发中使用代参的构造器:ArrayList list = new ArrayList (int capacity)
jak8中ArrayList的变化
ArrayList list = new ArrayList ();//底层Object[] elementData 初始化为{},并没有创建初始长度为10的数组
list.add(123):第一次调用add()时,底层才创建了长度为10的数组,并将数据123天假到elementData[0]
...
list.add(11)//如果此次导致添加底层elementData数组容量不够,则扩容。默认情况下,扩容为原来容量的1.5倍,同时需要将原有的数组中的数据复制到新的数组中
小结:jdk7中的ArrayList的对象的创建类似于单例的饿汉式,而jdk8中的ArrayList的对象的创建类似于懒汉式,延迟了数组的创建,节省内存。
在jdk1.8中一开始创建的数组中什么数据也没有
(2)LinkedList:对于频繁的插入、删除操作,使用此类比Arraylist效率高,底层使用双向链表存储
源码分析:
LinkedList list = new LinkedList()//内部声明了node类型的first和last属性,默认为空
list.add(123)将123封装到node中,创建了node对象其中Node定义为下图所示:体现了linkedList的双向链表的说法
添加数据
(3)Vector :作为list接口的古老实现类,底层使用Object数组 elementData存储
以上就是集合(集合数学知识点)的详细内容,想要了解更多 集合的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。