TreeMap其实可以说是较为特殊的一个集合类,因为它的数据结构是红黑树。
对于红黑树我们在之后会了解到concurrentHashMap也在一定程度上使用了该结构。
数据结构分析:
TreeMap每个key-value就是红黑树的一个节点。存储节点时,根据key对节点进行排序。
它保证所有key-value对处于有序地位。
排序方式:
1、自然排序:TreeMap的所有key必须实现Comparable接口,而且所有的key必须是同一个类的对象,否则抛出ClassCastException异常。
2、定制排序:创建TreeMap时,传入一个Comparator对象(比较器),采用定制排序时不要求map的key实现Comparable接口。
如何判断相等:
类似于TreeSet标准,两个key通过compareTo方法返回0,来判断是否相等。(其实Set集合就是所有value都为null的map集合)。
包含的方法分析:
1、firstEntry():返回map中最小key对应的键值对(Map.Entry)。
类似的,有firstKey。
2、lastEntry():类似的,有lastKey。
3、higherKey():大于指定key的最小key值,就这么记吧。对应的有higherEntry、lowerEntry等。
4、subMap(fromKey,flag,toKey,flag):返回该Map的子map,两个flag分别决定开闭,没有flag表示默认。
5、上面subMap的几个参数均可自由组合,例如只保留fromKey。但是方法名有所修改,例如:tailKey()和headKey().