1 equals() 和 == 的区别
在没有重写equals()方法时,二者是一样的,都是判断两个变量的内存值是否相等。
JAVA 1.8源码
public boolean equals(Object obj) {
return (this == obj);
}
2 HashTable和HashMap
2.1 HashTable是线程安全的,HashMap不是
JAVA 1.8源码
public synchronized boolean contains(Object value)
2.2 key 和 value 是否可以为空:
HashTable不可以
HashMap可以,但null key只能有一个
2.3 父类不同
Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口
4 HashMap采用了"static class Node<K,V> implements Map.Entry<K,V>"的数组 + 链表的结构,链表长度大于8的时候转化为红黑树
5 TreeSet Has-A NavigableMap
6 树的度相关的计算
树中结点数 = 总分叉数 +1。(这里的分叉数就是所有结点的度之和)
度为0的节点(叶子结点)是度为2的数量加1