⚪集合分为Collection
和Map
两种体系。
Collection单列集合,每个元素(数据)包含一个值;
Map双列集合,每个元素包含两个值(键值对,key,value)
⚪Collection集合体系:
⚪Collection集合主要方法:
⚪List集合的实现类的底层原理:
ArrayList底层是基于数组实现的,根据查询元素快,增删相对慢
LinkedList底层是基于双链表实现的,查询速度慢,增删首尾元素非常快
⚪HashSet集合采用哈希表存储的结构
⚪哈希表在JDK8之前底层使用数组+链表组成,在JDK8之后低层采用数组+链表+红黑树组成
Map集合主要方法:
Map是双列集合的祖宗接口,他的功能是全部双列集合都可以继承使用的
⚪Map集合遍历方式
键找值:先获取Map集合的全部键的Set集合,遍历Set集合,然后通过键找对应的值
键值对:先把Map集合转换成Set集合,Set集合每个元素就是键值对实体类型,遍历Set集合,就能提取键和值了
实际上,Set集合的底层就是Map实现的,只是Set集合的元素只要键数据,不要值数据
注意:
⚪集合是支持泛型的,集合和泛性都只能支持引用类型数据,不支持基本类型数据,所以集合中存储的元素都认为是对象
⚪在集合接口中,都存在of方法,可以创建一个不可变的集合,这个集合不能添加,不能删除,不能修改
⚪最后总结一下常用集合的分类
Collection 接口的接口 对象的集合(单列集合)
├——-List 接口:元素按进入先后有序保存,可重复
│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
│—————-└ Vector 接口实现类 数组, 同步, 线程安全
│ ———————-└ Stack 是Vector类的实现类
└——-Set 接口: 仅接收一次,不可重复,并做内部排序
├—————-└HashSet 使用hash表(数组)存储元素
│————————└ LinkedHashSet 链表维护元素的插入次序
└ —————-TreeSet 底层实现为二叉树,元素排好序
Map 接口 键值对的集合 (双列集合)
├———Hashtable 接口实现类, 同步, 线程安全
├———HashMap 接口实现类 ,没有同步, 线程不安全-
│—————–├ LinkedHashMap 双向链表和哈希表实现
│—————–└ WeakHashMap
├ ——–TreeMap 红黑树对所有的key进行排序
└———IdentifyHashMap
---------------------可能总结的会不全,以后有学新的再补---------------------