编程体系结构(03):Java集合容器
本文源码: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
推荐阅读:架构设计系列
编程体系结构(03):Java集合容器的更多相关文章
- 面霸篇:Java 集合容器大满贯(卷二)
面霸篇,从面试角度作为切入点提升大家的 Java 内功,所谓根基不牢,地动山摇. 码哥在 <Redis 系列>的开篇 Redis 为什么这么快中说过:学习一个技术,通常只接触了零散的技术点 ...
- Java集合容器简介
Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...
- [转载]Java集合容器简介
Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...
- Java并发编程系列-(5) Java并发容器
5 并发容器 5.1 Hashtable.HashMap.TreeMap.HashSet.LinkedHashMap 在介绍并发容器之前,先分析下普通的容器,以及相应的实现,方便后续的对比. Hash ...
- Java——(二)Java集合容器
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.基本概念 1)Collection:一个独立元素的序列,这些元素都服从一条或多条规则.Lis ...
- Java集合容器的深度理解
Java容器里有很多写好的容器API,这使我们很方便的可以存储.操作我们的数据. 下面是我写的容器的特点,一些容器的不同之处,从底层源码解析一下容器实现原理 一.常用的容器目录 上图可以看出,java ...
- JAVA并发编程的艺术 Java并发容器和框架
ConcurrentHashMap ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成. 一个ConcurrentHashMap里包含一个Segment数组, ...
- JAVA编程学习之JAVA集合
一.JAVA集合类 为了保存数量不确定的数据,以及保存具有映射关系的数据(关联数组),java提供了集合类.所有集合类位于java.util包下. 集合类就像容是器,现实生活中容器的功能,无非就是添加 ...
- 【转载】Java集合容器全面分析
转自:http://blog.csdn.net/garfielder007/article/details/52143803 简介: 集合类Collection不是Java的核心类,是Java的扩展类 ...
随机推荐
- C#设计模式之11-享元模式
享元模式(Flyweight Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/409 访问. 享元模式属 ...
- AndroidStudio新建项目报错build failed
AndroidStudio新建项目报错build failed 报错信息 org.gradle.initialization.ReportedException: org.gradle.interna ...
- Spring Boot自定义错误视图
Spring Boot缺省错误视图解析器 Web应用在处理请求的过程中发生错误是非常常见的情况,SpringBoot中为我们实现了一个错误视图解析器(DefaultErrorViewResolver) ...
- Uni-app从入门到实战
前言 uni-app是一个使用vue.js开发跨平台应用的前端框架,开发者只需要编写一套代码,便可以发布到IOS.Android和微信小程序等多个平台.所以我打算学习下这个框架,快速浏览了一遍官网之后 ...
- java集合初探(一):HashMap.
一.概述 HashMap可能是我们最经常用的Map接口的实现了.话不多说,我们先看看HashMap类的注释: 基于哈希表的Map接口实现. 这个实现提供了所有可选的映射操作,并允许空值和空键.(Has ...
- Android app启动出现白屏闪屏
出现白屏闪屏原因: 进入到AppStartActivity,但是未加载到布局文件,就先显示了窗口的背景,白屏就是显示的windows的背景,即所设置的theme. onCreate()中的setCon ...
- 【Flutter 实战】一文学会20多个动画组件
老孟导读:此篇文章是 Flutter 动画系列文章第三篇,后续还有动画序列.过度动画.转场动画.自定义动画等. Flutter 系统提供了20多个动画组件,只要你把前面[动画核心](文末有链接)的文章 ...
- 创建SpringMVC项目
学习SpringMVC框架第一步,先创建一个简单项目,了解流程.使用的是Eclipse+Tomcat9.0 创建项目springmvc 新建Dynamic Web Project File->N ...
- 记录一下前端性能优化-为何操作DOM会变慢?
对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩(css.js.图片皆可压缩) 样式表放头部,脚本放底部 使用CDN(这部分, ...
- 5.oracle用户管理
一.创建用户概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用.create user 用户名 identified by 密码; ...