List接口:存储有序,可重复的数据

  • |—ArrayList:主要实现类,线程不安全,效率高,底层使用Object[] elementData存储
  • |—LinkedList:底层使用双向链表存储,频繁插入,删除效率比ArrayList高
  • |—Vector:古老实现类,线程安全
  • ArrayList源码分析:查询效率高
  •  jdk7:
    
  •      public ArrayList();调用无参创建新的对象底层创建一个长度为10的Object[]数组elementData
    
  •      public boolean add(E e):进行元素添加时先判断数组容量是否够用,如果不够则扩容为原来的1.5倍,还小于此时需要的总和,则数组扩容为需要的总和,然后进行数组的复制操作
    
  •  jdk8:
    
  •      public ArrayList();调用无参创建新的对象时,底层并没有创建一个长度为10的Object[]数组elementData,长度为零
    
  •      public boolean add(E e):扩容与jdk7一样
    
  •  区别,jdk8的初始化时属于懒汉式,需要时再分配空间延迟数组的创建,jdk7属于饿汉式
    

*LinkedList源码分析:插入修改效率高

  •  1.public LinkedList() ,初始化时其first,last都为null
    
  •  其内部Node结构(双向链表)为:
    
  •  private static class Node<E> {
    
  •     E item;
    
  •     Node<E> next;
    
  •     Node<E> prev;
    
  •     Node(Node<E> prev, E element, Node<E> next) {
    
  •         this.item = element;
    
  •         this.next = next;
    
  •         this.prev = prev;
    
  •     }
    
  • }
    
  • Vector源码分析:
    
  • 1.初始化时分配10个空间
    
  •  public Vector() {
    
  •     this(10);
    
  •  }
    
  •  2.扩容时扩容为原来的的2倍:
    
  •      int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
    
  •                                      capacityIncrement : oldCapacity);
    

java基础-集合:list相关推荐

  1. java基础—集合框架

    java基础-集合框架 JDK1.2开始引入了集合框架的概念,以弥补java中只有数组这种容器的单一问题,这些框架多数由接口构成,另外也包含了一些对于接口实现的类,其中这些接口的最上层接口为java. ...

  2. JAVA基础+集合+多线程+JVM

    1. Java 基础 1.1. 面向对象和面向过程的区别 面向过程性能比面向对象高. 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候 等一般采用面向过程开发.但是 ...

  3. (阿里offer)春招知识点总结1:java基础+集合+并发+jvm+ssm

    写在前面:大量总结不是系统的总结,而是作者本人根据自己情况总结的,许多我很清楚的地方就不在提及,大量源码也均未提及,尤其是框架的总结提及很浅.仅作为自己短期技术栈的一个总结,只作为参考,不是一定正确的 ...

  4. java基础集合操作工具类Collections简述(java集合四)

    对集合中的元素进行排序 Collections中的sort方法使用 public class ListDemo {public static void main(String[] args) {Lis ...

  5. java基础----集合操作---实例----List集合的初始化

    文章内容:最近使用LeapMotion进行软件开发时,使用到了java API---->List集合,使用过程中遇到了一些小bug,特写此博客记录相关心得. 程序编写背景:使用leapMotio ...

  6. Java基础---集合的概述---list、set、map、泛型、collections

    集合的概述 单列集合的体系: Collection 单列集合的顶层接口 List Collection的子接口,增加了一些特有的方法,有序 可以重复 有索引 ArrayList 底层采用的数组结构实现 ...

  7. Java基础-------集合框架

    一,集合简介 1.1 集合由来: 对象的存储:①数组(基本数据类型  & 引用数据类型)  ②集合(引用数据类型)     >数组存储数据的弊端:长度一旦初始化以后,就不可变:真正给数组 ...

  8. JAVA基础---集合(一)--集合框架概述

    为什么用集合如何合理用集合,以及如何实现的和他们的实现原理,如果搞清了对于之后学习其他知识和开发是很有大帮助性的. 什么是集合框架? 集合框架是表示和操作集合的统一体系结构.所有集合框架都包含以下内容 ...

  9. 【面试专栏】第三篇:Java基础:集合篇-List、Queue

    面试中问完基础基本上就是考集合,因为集合的使用在业务开发中经常使用,而且集合的数据结构也是算法的基础,所以你对集合的掌握深度可能决定你有没有接着面的资格 List & Queue 实现类 Li ...

  10. java基础 —— 集合、异常、反射、io流、多线程

    1.集合 (Collection) #mermaid-svg-Po6HS0iqu2RMZvt5 .label {font-family: 'trebuchet ms', verdana, arial; ...

最新文章

  1. 《树莓派Python编程指南》——2.3 小结
  2. vue 用户拖拽窗口大小_VUE实战1:鼠标拖放改变窗口大小,后台管理界面
  3. 【转】多人联机射击游戏中的设计模式应用(一)
  4. Docker(基础理解)
  5. 思科bfd静态路由切换_思科路由器曝出两个严重零日漏洞,已被野外利用
  6. 第四章 虚拟机的安装和使用
  7. java 自动装箱自动拆箱
  8. CKEditor 4.14 发布,支持复制粘贴 LibreOffice 文档
  9. iOS高级-QuartzCore框架-背景平铺
  10. C++_跳转语句continue_跳转语句goto_一维数组数组_数组定义_数组名---C++语言工作笔记019
  11. ArcGIS10.4下载及安装
  12. oracle 日期函数trunc,oracle 日期函数 TRUNC
  13. 微信小程序上传图片使用canvas添加水印
  14. rapidminer进行关联分析、分类预测、聚类分析
  15. 【论文解读】深度学习目标检测 | R-CNN系列里程碑 | 一文弄懂Faster R-CNN
  16. python学习第二天——编写名片
  17. openSUSE 11.2 上试动Mono
  18. mysql编译器安卓版_手机在线编译器
  19. python打开是什么颜色-Python中常见颜色记录
  20. 如何实现gerrit的垃圾回收功能

热门文章

  1. docker安装Elasticsearch7.6集群并设置密码
  2. docker小技巧-清理未使用空间
  3. mac上的终端bash命令
  4. 群同态基本定理证明_近世代数(3)——群的基本性质
  5. linux ping程序设计与实现,一步步学Linux网络编程--ping命令的实现分析
  6. linux 内核round-robin scheduler代码,LINUX源代码阅读报告
  7. denied mysql permission_启动Mysql数据库报错误:-bash: ./start.sh: Permission denied
  8. html块级元素对齐方式,块级元素的三种垂直水平居中的方法
  9. Python零基础入门(4)——强大的分支与循环
  10. mysql索引设计策略_MySQL索引设计一些策略