—— 目录 ——
◉ 关系图
◉ 注意点
① Map 和 Collection 有继承关系吗?
答:没有,是两个独立的类,只不过 Collection 的子类中有的使用了 Map 的子类
② 集合中可以存放基本数据类型吗?
答:不可以,但却可以直接写基本数据类型,因为会自动装箱变成引用数据类型
③ 集合中可以存放对象吗?
答:不可以,只是存储对象的内存地址
④ 怎么区分无序和排序?
答:无序指元素被取出来的顺序不一定是存进去的顺序,和排序没有关系,如将存进来的元素按从大到小的顺序排序,那么存进与取出的顺序就不同了,为无序可排序。
● Collection
- 是一个 接口
- 只要没使用泛型,就可以存储任何对象
- 但要是用了泛型,就只能存储指定的类型
- 所有的集合都是单个储存元素的,都可迭代
— ○ List
- 是一个 接口 ,继承了 Collection
- 存储特点:有序可重复,存储的元素有下标(从0开始)
- 有序:存进去和取出来的元素顺序是相同的
—— ArrayList
- 底层采用了 数组 数据结构
- 线程不安全,但用的较多,有别的办法可以使线程安全
- 数组结构适合查询,但不适合频繁的增删操作
- 所以 ArrayList 查询效率较高,随机增删效率较低
—— LinkedSet
- 底层采用 双向链表 数据结构
- 链表由于在存储空间上没有顺序
- 查找时只能从头开始查找,查找效率较低
- 但对于随机的增删效率较高
—— Vector
- 底层采用 数组 数据结构
- 线程安全,方法都用 synchronized 修饰了
- 但比较少用了,性能较差
— ○ Set
- 是一个接口,继承了 Collection
- 元素无序不可重复
- 无序:存进去和取出来的元素顺序不一定相同
—— HashSet
- 采用了 哈希表 数据结构
- 底层其实是一个 HashMap ,元素存放在 HashMap 的 key 部分
—— SortedSet
- 是一个 接口 ,继承了 Set
- 存储进去的元素无序不可重复
- 但存进去的元素会自动按照大小排序
- 注意:无序 != 不可排序
- 无序只是说存进去和取出来的元素顺序不一样,但排序说的是对元素进行排序,不一样
——— TreeSet
- 采用了 二叉树 数据结构
- 底层其实是一个 TreeMap ,元素存放在 HashMap 的 key 部分
● Map
- 是一个 接口
- 存储方式为键值对,以 key 和 value 的方式储存
- 包含一个 key 对象和一个 value 对象
- key 对象不可重复,value 对象可以重复
- Map 中的 key 起决定性作用,通过 key 找到对应的 value
- key 部分的元素无序不可重复,所以可以看成一个 Set 集合。但它储存的* 元素可以按照元素的大小自动排序
— ○ HashMap
- 采用了 哈希表 数据结构
- key 部分的元素无序不可重复,就是一个 HashSet
— ○ Hashtable
- 是线程安全的,效率较低,使用较少
—— Properties
- 特点:key 和 value 只能采用 字符串 类型
— ○ SortedMap
- key 的特点依旧是无序不可重复,但会按照元素大小自动排序
—— TreeMap
- 采用了 二叉树 数据结构
更高,更远(寒冰小澈)