2021年08月09日 课堂笔记
Set集合
hashCode()
equals()
Set如何判断里面的元素是否相等。
先比较hashCode,如果hashCode不相等,那么这两个元素就是不相等的。
如果hashCode相等的话,接着使用equals()方法来判断这两个元素是否相等。
HashSet
底层还是HeashMap
TreeSet
底层是TreeMap
compare方法
compareTo方法
TreeSet排序
要装入TreeSet的元素要实现Comparable接口
或者实现Comparator接口
一般优先使用Comparable接口。
队列
PriorityQueue
数组实现的。
不能加入null,
链式队列(LinkedList)
如何扩容
poll方法
Hashtable
负载因子是什么意思。
如何扩容
Hashtable是线程安全的,而且是用拉链法做的,头插法。
看老师的PPT.
Properties
Hashtable的子类。
HashMap
HashSet是通过HashMap构造
负载因子
loadFactor
拉链法
线程不安全
红黑树(平衡树,AVL数)
Hashtable纯粹是拉链法
HashMap是拉链法+红黑树。
当存储的元素的数量超过负载因子的时候,不是使用拉链法开辟地址,而是改成红黑树。
HashMap的key可以为null,但是value可以为null.
key要唯一,所以key只能设置为null一次,value可以随意。
线程安全的HashMap。
如何判别两个对象是否一致
先调用hashCode,如果hashCode不一致,再调用equals()判断是否一致。
Map里面没有迭代器。
HashMap和Hashtable都由一个东西叫负载因子
TreeMap
排序的
存储机制是红黑树
TreeMap里面key可以为null吗?
key不能为null,因为compare方法需要使用key1.compareto(key2)方法,null不能调用方法所以TreeMap的可以不能为null.
ConcurrentHashMap
Key和value是否能为空,不可以:源码就是这么写的:
原子操作
同步方法
同步代码块,同步代码块锁的颗粒度比较小,效率更高
三次登录,可以先不做了,(自己还需要做)
明天讲Mybatis
Collections
工具类
问在集合里面线程安全
List里面有Vetor,
Map里面有
concurrentHashMap—-拉链方法+红黑树,
Collections工具类的SynchronizeedXXXX方法。
问的时候,已经不要问什么就说什么,一定要展开说。