Map内部有两个属性:key(键)和value(值)。它们主要是保证键的,
题外话(Set集合底层也是用的Map,是把元素存在Map的键上,值是系统分配的,你看不见)
下面是我记的笔记跟你分享下:
HashMap特性
1.底层使用哈希表结构
2.无序!
3.线程不安全的!
4.对于常用方法可以保证稳定的性能!
5.因为使用哈希表,所以键元素类型必须重写equals()和hashCode()方法
HashMap
它要求键元素类型必须重写hashCode()和equals()来保证唯一性,如果hashCode()相等,再使用equals()比较,
如果hashCode()不相等,就 不再使用equals()比较。
TreeMap的特性
1.底层使用二叉树结构;
2.有序!使用键类型的自然顺序,或者TreeMap的比较器排序;
3.使用TreeMap要求键类型有自然顺序,或者给TreeMap提供比较器;
TreeMap
要求元素类型有自然顺序,只要实现了Comparable<T>接口的类就有了自然顺序,必须实现接口的compareTo()方法进行比较,
写不完整的compareTo()容易造成TreeSet出问题。
如果元素没有自然顺序比较,可以创建TreeSet()时提供一个比较器,即:Comparator接口。 |