Map
HashMap中,如果是我们的自己定义的类的对象,作为键的时候,必须要重写hashcode( )和equals( ),当然上层的HashSet,也同理
HashMap底层是数组+单向链表的结构,数组用于存放键的hash值,而链表用于存储k-v结构, ,数组构成了HashMap中的Hash表,表的大小默认是16,可以存放的数据是16加载因子0.75,当超过160.75个数据时, Hash表将自动扩容,扩容后的的大小是16*2^n
Hashtable 和HashMap 的区别:
1.Hashtable是线程安全的,HashMap是线程非安全
2.HashMao中允许存放空键(只允许出现一次),空值,但是Hashtable
collections
1.适用于list排序
2.Collections.reverse( ) 反转集合
3.Collections.sort( ) 升序排序
4.Collections.max( )最大元素
5.Collections.mix( )最小元素
6.Collections和Collection的区别:Collection 是LIst列表集合,和set集合的父接口,Collections是集合工具类
set 不允许元素重复
TreeSet 集合中的元素,必须要实现Comparable接口,并重写compareTo(),底层是TreeMap,但是TreeMap是采用二叉树结构来存储数据,在二叉树中,比较元素时,比树中元素小的,永远在下一代的左边,当然,比树中元素大的,永远在下一代的右边,相等的,就直接覆盖,二叉树结构,见https://blog.csdn.net/github 26672553/article/details/7718500
Hashset底层是hashmap