一个类可以实现多个接口,但一个类只能继承一个抽象类。
接口强调特定功能的实现,而抽象类强调所属关系。
HashMap的value为Object时为HashSet。
HashMap初始容量(散列表大小)16,默认加载因子0.75。
加载因子 = 填入表中的元素个数 / 散列表的长度。
get()方法无哈希冲突时为O(1)。
底层链表长度大于8时变红黑树,小于6变成链表。
HashMap线程不安全,可序列化,key存放无序,key可以有一个为null,迭代器为fail-fast。
TreeMap中key按红黑树排序了。
HashTable是线程安全的,key,value不能为null
Arraylist为数组存储,LinkedList为双链表存储。
Map排序
public void MapSortByKey(){
Comparator<Character> com = (a,b)->a-b;
Map<Character,Integer> map = new TreeMap<>(com);
}
public void MapSortByValue(){
Comparator<Map.Entry<Character,Integer>> com = (a,b)->{
return b.getValue()-a.getValue();
};
Map<Character,Integer> map = new HashMap<>();
/*
There put map;
*/
List<Map.Entry<Character,Integer>> list = new ArrayList<>(map.entrySet());
list.sort(com);
}