2017-07-29 13:49:40

一、Collection的全局继承关系

二、系列文章

【Java集合系列一】ArrayList解析

备注:

1、ArrayList本质上就是一个数组,所有对外提供的方法都是对数组操作的封装;

2、比如add操作,先扩容,然后插入到数组中;set操作,本质上就是替换操作;删除操作,就是将待删除元素之后所有的元素统统前移一位;indexOf操作,就是遍历数组,找到元素所在位置的下标;

3、此类中依赖元素对象的equals方法,不依赖hashCode方法;

4、此类中扩容、删除等操作,需要操作数组,严重依赖System.arrayCopy()方法;

【Java集合系列二】LinkedList解析

备注:

1、LinkedList采用双向链表存储、处理元素;

2、定义2个指针:first和last,支持双向操作;

3、LinkedList还提供了很多特有的方法,比如支持队列式访问的方法;

4、其他同ArrayList;

5、LinkedList和ArrayList如何选择?

普通意义上理解,数组按照下标访问元素,速度更快,但是如果是遍历或者使用indexOf,那么ArrayList没什么优势;至于插入和删除,由于ArrayList涉及到扩容,如果ArrayList触发扩容,代价较高,否则,如果插入和删除都在末尾,那么没什么区别,如果是在列表中间,那么LinkedList优势巨大;至于修改元素,ArrayList代价较小,LinkedList需要先遍历得到index位置的元素,才能替换。

结论:

如果有大量的访问、替换操作,且是通过下标来使用的,那么选择Arraylist,这样最能发挥ArrayList的优势。其他比如遍历访问,两者差不多,除此之外的其他使用场景,优先推荐使用LinkedList。

【Java集合系列三】Vector-Stack解析

Vector和ArrayList的异同:

1、扩容策略不同;

2、线程安全的;

3、提供了一些独特的如removeElement()之类的方法;

4、其他方法的实现与ArrayList几乎是一致的,毕竟都是对数组的操作;

5、忽略这个类即可;

【Java集合系列四】HashSet和LinkedHashSet解析

【Java集合系列五】HashMap解析

【Java集合系列六】LinkedHashMap解析

【Java集合系列】目录的更多相关文章

  1. Java 集合系列目录(Category)

    下面是最近总结的Java集合(JDK1.6.0_45)相关文章的目录. 01. Java 集合系列01之 总体框架 02. Java 集合系列02之 Collection架构 03. Java 集合系 ...

  2. 深入java集合系列文章

    搞懂java的相关集合实现原理,对技术上有很大的提高,网上有一系列文章对java中的集合做了深入的分析, 先转载记录下 深入Java集合学习系列 Java 集合系列目录(Category) HashM ...

  3. Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)

    概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...

  4. Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例

    概要  前面,我们已经学习了ArrayList,并了解了fail-fast机制.这一章我们接着学习List的实现类——LinkedList.和学习ArrayList一样,接下来呢,我们先对Linked ...

  5. Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对HashMap进行学习.我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap.内容包括:第1部分 HashMap介绍第2部分 HashMa ...

  6. Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例

    概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Ha ...

  7. Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)

    概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...

  8. Java 集合系列18之 Iterator和Enumeration比较

    概要 这一章,我们对Iterator和Enumeration进行比较学习.内容包括:第1部分 Iterator和Enumeration区别第2部分 Iterator和Enumeration实例 转载请 ...

  9. Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  10. Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

随机推荐

  1. Python记录12:迭代器+生成器+生成式

    '''1. 什么是迭代器 什么是迭代:迭代就是一个重复的过程,但是每一次重复都是基于上一次的结果而进行的 单纯的重复不是迭代: while True: print(1) 迭代的过程 l=['a','b ...

  2. centos7安装zabbix3.0超详细步骤解析

    centos7安装zabbix3.0超详细步骤解析 很详细,感谢作者 以下是我操作的history 622 java -version 623 javac -version 624 grep SELI ...

  3. JavaScript 原型链学习(二)原型的动态性

    由于在原型中查找值的过程是一次搜索,因此我们对原型对象所做的任何修改都能够立即从实例上反映出来,即使是先创建了实例后修改原型也照样如此.如下示例: var friend = new Person(); ...

  4. MySQL 5.6 (Win7 64位)下载、安装与配置图文教程

    一. 工具 Win7 64位操作系统 二. 步骤 第一步:下载安装包 下载 地址:http://www.mysql.com/ 截止到目前(2016/7/24) ,官网的最新版本是5.7.13,不过自己 ...

  5. win10忘记开机密码无法进入桌面

    第一种: 电脑用微软账户登录,但密码始终不正确. 登陆这个网址    https://account.live.com/password/reset 按照提示的操作利用之前注册信息一步步重设密码 最后 ...

  6. shell的交互式和非交互式登录

    工作中经常碰见环境变量加载问题,归根结底就是配置文件的加载问题. 一般会有四种模式:交互式登陆.非交互式登陆.交互式非登陆.非交互非登陆. 交互式和非交互式对环境变量的加载: +----------- ...

  7. 彻底删除windows残留启动引导

    在win7/Win8系统下安装其他系统或者一键重装系统后,安装的系统删除或者一键重装文件删除了,在windows启动管理器中还残留了启动引导选项,影响开机效率. 在系统配置中有些"引导&qu ...

  8. docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面

    1.从容器里面拷文件到宿主机? 答:在宿主机里面执行以下命令 docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径 示例: 假设容器名为testtomcat, ...

  9. TestNG详解(单元测试框架)

    一.TestNG的优点 1.1 漂亮的HTML格式测试报告 1.2 支持并发测试 1.3 参数化测试更简单 1.4 支持输出日志 1.5 支持更多功能的注解 二.编写TestNG测试用例的步骤 2.1 ...

  10. 在ionic中使用短信验证码倒计时

    页面上 <button class="code" (click)="getCode()" [disabled]="!verifyCode.dis ...