集合(集合数学知识点)_3

  本篇文章为你整理了集合(集合数学知识点)的详细内容,包含有集合竞价什么意思 集合数学知识点 集合竞价成交规则 集合竞价分时图怎么看 集合,希望能帮助你了解 集合。

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: