编程体系结构(03):Java集合容器
source link: http://mp.weixin.qq.com/s?__biz=MzU4Njg0MzYwNw%3D%3D&%3Bmid=2247484833&%3Bidx=1&%3Bsn=69ca50f98b3504de80592c8f778389f3
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
一、集合容器简介
集合容器是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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK