编程体系结构(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
推荐阅读:架构设计系列
标题 |
---|
架构设计:单服务.集群.分布式,基本区别和联系 |
架构设计:分布式业务系统中,全局ID生成策略 |
架构设计:分布式系统调度,Zookeeper集群化管理 |
架构设计:接口幂等性原则,防重复提交Token管理 |
架构设计:缓存管理模式,监控和内存回收策略 |
架构设计:异步处理流程,多种实现模式详解 |
架构设计:高并发流量削峰,共享资源加锁机制 |
架构设计:分布式服务,库表拆分模式详解 |
架构设计:分布式事务①概念简介和基础理论 |
架构设计:基于电商交易流程,图解TCC事务分段提交 |
架构设计:基于消息中间件,图解柔性事务一致性 |
编程体系结构(03):Java集合容器相关推荐
- Java 集合容器篇面试题(上)-王者笔记《收藏版》
前期推荐阅读: Java基础知识学习总结(上) Java 基础知识学习总结(下) 大学生一个暑假学会5个神仙赚钱技能 | 你学会了几个? 毕设/私活/大佬必备,一个挣钱的开源前后端分离脚手架 目录 一 ...
- Java集合容器面试题重点汇总
集合容器概述 什么是集合 **集合框架:**用于存储数据的容器. 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构. 任何集合框架都包含三大块内容:对外的接口.接口的实现和对集合运算的算 法 ...
- Java集合容器面试题
文章目录 集合容器概述 什么是集合 集合的特点 集合和数组的区别 使用集合框架的好处 常用的集合类有哪些? List,Set,Map三者的区别?List.Set.Map 是否继承自 Collectio ...
- Java集合容器全面分析
简介: 集合类Collection不是Java的核心类,是Java的扩展类.集合可以用来储存任何类型的对象,给程序员提供了代码编写的灵活性,但是同时也带来了类型安全的问题.JDK1.5集以上的版本支持 ...
- Java集合容器系列04-HashMap
2019独角兽企业重金招聘Python工程师标准>>> 一.HashMap介绍 HashMap是基于哈希表实现的Map容器,存储的元素是键值对映射.继承自AbstractMa ...
- 《Java编程思想》学习笔记9——集合容器高级
1.Arrays.asList()方法产生的List是一个固定长度的数组,只支持不改变长度的操作,任何试图改变其底层数据结构长度的操作(如,增加,删除等操作)都会抛出UnsupportedOperat ...
- 《Java编程思想》学习笔记4——集合容器
1.集合中添加另一个集合的方法: (1).Collection.addAll(被添加的Collection对象)方法: 如:list1.addAll(list2); (2).Collections.a ...
- Java集合总结汇总(链接)
Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. Java集合框架的基本接口/类层次结构: java.util.Colle ...
- Java集合框架List,Map,Set等全面介绍
Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构. Java集合框架的基本接口/类层次结构: java.util.Colle ...
最新文章
- 3G网络关闭,4G还会远吗?
- MacOS开发必备工具brew,安装nginx反向代理,替代linux工具 apt-get和 yum...
- 将“softmax+交叉熵”推广到多标签分类问题
- 整数转罗马数字Python解法
- Visual Studio 2008破解版本
- LeetCode之Palindrome Number(回文数)
- mysql union all 别名_mysql union和union all
- 多线程循环输出abcc++_C ++循环| 查找输出程序| 套装2
- spring cloud的RefreshScope注解进行热部署
- BGP 同步 黑洞 peergroup rr 联邦 full-mesh
- 设置不定宽高的元素垂直水平居中
- 用枚举法实现单例设计模型
- 华为5102路由器虚拟服务器,华为路由WS5102怎么设置wifi中继功能
- C/C++ Npcap包实现ARP欺骗
- java开发实习报告_JAVA实习报告 (7000字)
- Nanjing GDG Meetup 8月线下活动
- 手机做web服务器 无限流量,无限流量卡和手机随身无线wifi,你选择哪一个?
- 工程力学(1)-公理以及简单的受力分析
- 喜报 | 天空卫士被评为北京市专精特新“小巨人”企业
- RedHat 5 环境下 DHCP配置详解。
热门文章
- androidstudio在mainactivity实现监听器借口无法抽象_趣操作,Tomcat如何实现一键式启停?
- python 线性回归 统计检验 p值_PAST:最简便易用的统计学分析软件教程(一)软件基本信息介绍...
- 互联网金融--支付结算平台的测试
- (软件工程复习核心重点)第六章实现和测试-第二节:软件测试基础
- (计算机组成原理)第二章数据的表示和运算-第二节3:定点数的移位运算(算数移位、逻辑移位和循环移位)
- SetWindowsHookEx
- Qt拖放 drag and drop
- Python中NotImplementedError的使用方法(抽象类集成子类实现)
- tree命令的使用(过滤文件夹)
- matlab实现一/多元非线性回归