不多说,直接上干货!

  这篇我是从整体出发去写的。

牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

List集合中子类 Vector、ArrayList、LinkedList

  List:有序, 可重复, 有索引。三者均为可伸缩数组
  Vector:底层数据结构是数组结构。 jdk1.0版本。 线程安全的。 无论增删还是查询都非常慢。默认扩充为原来的2倍。
  ArrayList:底层数据结构是数组结构。 线程不安全的。 所以ArrayList的出现替代了Vector, 但是查询的速度很快。默认扩充为原来的1.5倍。
  LinkedList:底层是链表数据结构。 线程不安全的, 同时对元素的增删操作效率很高。但查询慢
  注意: 链表结构是这样的: 让后一个元素记住前一个元素的地址。

   Vector 和  ArrayList都是基于存储元素的Object[ ] array来实现的。

   LinkedList是采用双向列表来实现的。

  1、 线程同步,Vector线程安全,ArrayList线程不安全。

  2、 效率问题,Vector效率低,ArrayList效率高。

  3、 增长数量,Vector以1.5倍增长,ArrayList以2倍增长。

 LinkdedList,增删改查很快:

LinkedList的查询速率比较慢:

  

    List集合子类Vector这个类已经不常用了, 我就说里面的一个方法, Elements方法, 这个方法的返回值是枚举接口, 里面有两个方法, 判断和获取。此接口Enumeration的功能与 Iterator 接口的功能是重复的。Enumeration的名称和方法的名称过程, 书写很麻烦。 所以被Iterator所取代。

ArrayList 、 LinkedList 、 Vector 的底层实现和区别:

  ArrayList是实现了基于动态数组的数据结构,LinkedList基于双线链表的数据结构。

  ArrayList可以随机定位对于新增和删除操作add和remove,LinedList比较占优势

  具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。

  Vector与ArrayList唯一的区别是,Vector是线程安全的,即它的大部分方法都包含有关键字synchronized,因此,若对于单一线程的应用来说,最好使用ArrayList代替Vector,因为这样效率会快很多(类似的情况有StringBuffer线程安全的与StringBuilder线程不安全的);而在多线程程序中,为了保证数据的同步和一致性,可以使用Vector代替ArrayList实现同样的功能。

牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别相关推荐

  1. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  2. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...

  3. 牛客网Java刷题知识点之构造函数可以调用一般函数,但是一般函数不可以直接调用构造函数...

    不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...

  4. 牛客网Java刷题知识点之字节缓冲区练习之从A处复制文本文件到B处(BufferedReader、BufferedWriter)、复制文本文件的原理图解...

    不多说,直接上干货! CopyTextByBufTest.java package zhouls.bigdata.DataFeatureSelection.test;import java.io.Bu ...

  5. 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序...

    不多说,直接上干货! 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行 ...

  6. 牛客网Java刷题知识点之数组、链表、哈希表、 红黑二叉树

    不多说,直接上干货! 首先来说一个非常形象的例子,来说明下数组和链表. 上体育课的时候,老师说:你们站一队,每个人记住自己是第几个,我喊到几,那个人就举手,这就是数组. 老师说,你们每个人记住自己前面 ...

  7. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)...

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

  8. 牛客网Java刷题知识点之表达式类型的自动提升

    不多说,直接上干货! 转载于:https://www.cnblogs.com/zlslch/p/7553808.html

  9. 牛客网java刷题笔记2019-1-4

    牛客网java刷题笔记 2019-1-4 1.java中可以用类中构造器调用其他类构造器(这个和C++中构造函数很类似)用于初始化程序变量值, 构造器和方法的区别: 功能和作用的不同 构造器是为了创建 ...

最新文章

  1. delphi 图像处理 图像左旋右旋
  2. uoj 118 赴京赶考
  3. [20170606]11G _optimizer_null_aware_antijoin.txt
  4. 初探奥尔良(Orleans)
  5. mysql semi join_MySQL 5.6 Semi join优化之materialization strategy
  6. ffmpeg-从mp4、flv、ts文件中提取264视频流数据
  7. 废旧光盘手工小制作_废旧利用 | 幼儿园手工卷纸筒制作大全,超实用
  8. 鸿蒙轻内核M核的故障管家:Fault异常处理
  9. 剑指offer面试题06. 从尾到头打印链表(辅助栈法)
  10. 《构建高可用Linux服务器 第3版》—— 2.7 系统维护时应注意的非技术因素
  11. vs2005中文版/2010中文旗舰版等安装步骤和注意
  12. Centos7搭建maven私服nexus3,互联网大厂高频重点面试题
  13. 信息安全技术及应用 系统安全防护技术
  14. mapinfo professional 学习资料
  15. 如何将word图片粘贴到动易CMS里面
  16. 关于车臣战争有什么电影?车臣战争片推荐
  17. DQ77KB升级bios和AMT设置
  18. 光大银行监控平台实践,含详细工具及架构选型思路
  19. Excel学习日记:L18-CountifsSumifs函数
  20. 让TXT文本等其他任意格式的文件,不在IE中打开,而直接下载的方法

热门文章

  1. centos7 安装openocd
  2. HTML1个像素宽的代码,HTML5 Canvas中绘制一个像素宽的细线实现代码详情
  3. access建立两个字段唯一索引_面试官:谈谈你对mysql索引的认识?
  4. java future 返回值_Java--Callable与返回值future
  5. linux mysql 5.7.13 安装_mysql 5.7.13 安装配置方法图文教程(linux)
  6. linux 删除文件
  7. @enableautoconfiguration注解作用_如何让代码变“高级”-Spring组合注解提升代码维度(这么有趣)...
  8. 网页输入数据到mysql_为什么用PHP编写的网页中,输入的数据不能插入到Mysql数据库中?...
  9. asppython份额_为什么JAVA份额那么高,存在感却不如Python?
  10. python列表转集合_Python数据类型 列表、元组、集合、字典的区别和相互转换