一、collection集合
1.ArrayList 与vector 特点
1) 底层是数组,数组的特点是访问快,添加删除慢
其次 对于Arraylist 和vector 也有一些区别
2)vector是线程安全的 ,ArrayList 不是线程安全的
3)初始化大小 都是10
4) 扩容 ArrayList 按1.5倍 扩容 ,vector 按2倍大小扩容
2.记住linkedlist
底层是双向链表,访问慢,添加删除效率高
增加了针对第一个 元素/最后一个元素的操作
3.set集合
set集合 无序不可重复
无序是指存储顺序与添加顺序可能不一样
不能存储重复的数据
4. hashSet特点
底层是hashMap
向hashSet添加元素就是把元素作为键添加到底层的hashMap 中
hasSet就是hashMap 键的集合
5.TreeSet特点
①实现SortedSet 接口,可以对集合中的元素自然排序,要求元素必须是可比较的。
1)在构造方法中指定comparator 比较器
2)如果没有在构造方法中指定Comparator 比较器,要求元素的类实现了computerable 接口
②TreeSet 底层就是TreeMap
③向TreeSet添加元素就是把元素作为键添加到底层的TreeMap中
④TreeSet就是TreeMap键的集合
二、Map集合
Map集合的形式 :map集合按 < 键,值> 对的形式存储数据
1) HashMap 工作原理
HashMap 底层是哈希表,哈希表是一个数组,数组的每一个元素是单向链表,结合了数组与单向链表的优点。
HashMap是如何解决哈希冲突(哈希碰撞)的?(重要)
采用链表法
不同键的hashCode()返回值可能相同, 即键不一样,得到的哈希可能一样; 不同的哈希码经过hash函数得到hash值可能一样; 不同的hash值计算出的数组下标可能一样. 不同的键值对在数组中存储的位置(计算得出的数组下标)可能相同, 这就是哈希碰撞(哈希冲突)**
Map集合的后续知识点下次在探讨一下
day08,晚安咯 ~~~~