本文源码:GitHub·点这里 || GitEE·点这里

一、集合容器简介

集合容器是Java开发中最基础API模块,通常用来存储运行时动态创建的元素,基本特点如下:

  • 泛型特点,存储任意类型对象;
  • 动态扩容,存储任意数量对象;

这里对存储数量是受到程序和内存等环境制约的,从List的get()方法中可以看出,index的范围是Integer.MAX_VALUE。

二、API体系

三大核心接口:List、Set继承Collection, Map独立接口

List与Set体系

List体系核心API:ArrayList,LinkedList、Vector

Set体系核心API:HashSet、TreeSet、LinkedHashSet

Queue队列API:PriorityQueue、LinkedHashSet

Map体系

Map体系核心API:HashMap、LinkedHashMap、TreeMap、Hashtable

三、基础容器详解

1、核心内容

  • 元素存储,增删改查判断等基础用法
  • API方法中线程安全问题
  • 容器初始化大小与动态扩容机制
  • 底层数据结构特点
  • 同一接口或者不同接口体系容器对比

基本熟练使用并理解集合容器,需要知道如上几块内容:API基础用法,线程安全问题;容器大小与扩容;结构特点,数组、链表、哈希表;

2、API体系详解

Collection:集合容器的根接口,定义公共方法;

List体系

  • ArrayList

维护Object数组实现,特点:查询快,增删慢,非线程安全,所以效率高。

  • LinkedList

底层维护链表数据结构实现,特点:查询慢,增删快,非线程安全,所以效率高。

  • Vector

底部维护Object数组,实现和ArrayList一样,但是Vector是线程安全,效率低。

Set体系

  • HashSet

底层是使用了哈希表来支持的,特点:存取速度快,元素唯一且无序。

  • LinkedHashSet

底层数据结构是链表和哈希表,链表保证元素有序性,哈希表保证元素唯一性,非线程安全。

  • TreeSet

数据结构是红黑树,如果元素具备自然顺序的特性,那么就按照元素自然顺序的特性进行排序,或者基于比较器自定义排序。

Map体系:

Map接口的实现类,具备的特点:存储的数据都是以键值对的方式,键不可以重复,值可重复。

  • HashMap

底层使用hashCode表来实现向HashMap中添加元素,允许使用null值和null键,不保证元素的顺序固定。

  • TreeMap

TreeMap:基于二叉树的数据结构实现的,会对具备自然特性的键进行排序存储:元素的键具备自然特性,直接排序存储;不具备自然特性,实现Comparable接口,在ComparaTo中定义排序规则。

  • HashTable

线程安全,相对效率低,不允许使用null值。

3、容器遍历

  • 基于for、foreach、while流程控制
  • Iterable迭代器核心接口
  • Lambda表达式:遍历、分组、查询

四、源代码地址

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

推荐阅读:架构设计系列

标题
架构设计:单服务.集群.分布式,基本区别和联系
架构设计:分布式业务系统中,全局ID生成策略
架构设计:分布式系统调度,Zookeeper集群化管理
架构设计:接口幂等性原则,防重复提交Token管理
架构设计:缓存管理模式,监控和内存回收策略
架构设计:异步处理流程,多种实现模式详解
架构设计:高并发流量削峰,共享资源加锁机制
架构设计:分布式服务,库表拆分模式详解
架构设计:分布式事务①概念简介和基础理论
架构设计:基于电商交易流程,图解TCC事务分段提交
架构设计:基于消息中间件,图解柔性事务一致性

编程体系结构(03):Java集合容器的更多相关文章

  1. 面霸篇:Java 集合容器大满贯(卷二)

    面霸篇,从面试角度作为切入点提升大家的 Java 内功,所谓根基不牢,地动山摇. 码哥在 <Redis 系列>的开篇 Redis 为什么这么快中说过:学习一个技术,通常只接触了零散的技术点 ...

  2. Java集合容器简介

    Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...

  3. [转载]Java集合容器简介

    Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...

  4. Java并发编程系列-(5) Java并发容器

    5 并发容器 5.1 Hashtable.HashMap.TreeMap.HashSet.LinkedHashMap 在介绍并发容器之前,先分析下普通的容器,以及相应的实现,方便后续的对比. Hash ...

  5. Java——(二)Java集合容器

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.基本概念 1)Collection:一个独立元素的序列,这些元素都服从一条或多条规则.Lis ...

  6. Java集合容器的深度理解

    Java容器里有很多写好的容器API,这使我们很方便的可以存储.操作我们的数据. 下面是我写的容器的特点,一些容器的不同之处,从底层源码解析一下容器实现原理 一.常用的容器目录 上图可以看出,java ...

  7. JAVA并发编程的艺术 Java并发容器和框架

    ConcurrentHashMap ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成. 一个ConcurrentHashMap里包含一个Segment数组, ...

  8. JAVA编程学习之JAVA集合

    一.JAVA集合类 为了保存数量不确定的数据,以及保存具有映射关系的数据(关联数组),java提供了集合类.所有集合类位于java.util包下. 集合类就像容是器,现实生活中容器的功能,无非就是添加 ...

  9. 【转载】Java集合容器全面分析

    转自:http://blog.csdn.net/garfielder007/article/details/52143803 简介: 集合类Collection不是Java的核心类,是Java的扩展类 ...

随机推荐

  1. itest(爱测试) 开源一站式敏捷测试管理平台&极简项目管理,重大升级(接口测试)6.0.0 发布

    itest 简介 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试5合1,又有丰富的统计分析.可按测试包分配测试用例执行,也可建测试迭代 ...

  2. HTML基础-03

    盒子模型 盒子模型(框模型 box model) - 浏览器在渲染页面时,它会将页面中的每一个元素都想象成是一个矩形的盒子. - 想象成盒子以后,对于页面的布局就变成了如何摆放盒子 - 每一个盒子从内 ...

  3. Java中的注解及自定义注解你用的怎么样,能不能像我这样应用自如?

    Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...

  4. Spring Security报异常 Encoded password does not look like BCrypt

    控制台报错: Encoded password does not look like BCrypt 意思是前端传回去的密码格式与数据库里的密码格式不匹配,这样即使密码正确也无法校验.自然也就无法登录. ...

  5. you-get的一点修改

    一直用you-get这个python写的开源软件下载一些视频网站的视频(主要是太烦不断插入的广告),最近看了点python,就对于自己觉得不够方便的地方,尝试修改.因为感觉他的github上提交修改建 ...

  6. 《Java从入门到失业》第二章:Java环境(二):JDK、JRE、JVM

    2.2JDK.JRE.JVM 在JDK的安装目录中,我们发现有一个目录jre(其实如果是下一步下一步安装的,在和JDK安装目录同级目录下,还会有一个jre目录).初学Java的同学,有时候搞不清楚这3 ...

  7. Kubernetes实战指南(三十三):都0202了,你还在手写k8s的yaml文件?

    目录 1. k8s的yaml文件到底有多复杂 2. 基于图形化的方式自动生成yaml 2.1 k8s图形化管理工具Ratel安装 2.2 使用Ratel创建生成yaml文件 2.2.1 基本配置 2. ...

  8. vue watch 和 computed 区别与使用

    目录 computed 和 watch 的说明 与 区别 computed 计算属性说明: watch 监听属性说明: watch 和 computed 的区别是: 使用 参考官方文档 compute ...

  9. 痞子衡嵌入式:解锁i.MXRTxxx上FlexSPI模块自带的地址重映射(Remap)功能

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT三位数系列隐藏的FlexSPI Remap功能. 前段时间痞子衡写了一篇文章 <利用i.MXRT1060,1010上新 ...

  10. Invalid credentials for 'https://repo.magento.com/packages.json'

    Use your public key as username and private key as password from your magento connect account You ca ...