TreeMap是一个直接由红黑树实现的结构,对于Key值得比较来排序,显然得到:
1.key的class必须实现comparable方法, 不能抛出ClassCastException异常,否则必须指定一个comprartor
2.由于TreeMap实现了Serializable接口,所以默认的或者自定义的comparator也应该实现该接口
最重要的是,实现了NavigableMap,我理解为导航map,提供了各种操作map视图的操作
四个构造方法,其实就是是否使用默认的compatator
对于无序Map,直接调用putAll,有序的SortedMap话递归调用buildFromSorted,提高效率
但是putAll依然判断了map instanceof SortedMap
具体的红黑树的操作在此不作赘述
remove(),put()最根本的操作是红黑树的操作,get()也是二叉搜索树比较直观的实现
有关树的操作的方法,其实就是代码分支比较多,需要考虑各种情况然后转换为代码就好了比较的话看如果有comparator就用,没有就用key默认的comparable在containsValue()从第一个节点开始successor遍历在forEach()从第一个节点开始successor遍历replaceAll()从第一个节点开始successor遍历赋值新的valueremove()遍历找出Object删除
跟getCeilingEntry一样的只不过对于相等的情况,不考虑相等的情况
底层由DescendingSubMap()实现,其实还是这个map,只不过对于所有的操作,比如getfist(),会将其转换为getLast()来执行,所以对于DescendingMap()的操作依然会影响原Map
同样的,subMap()的操作也会影响原Map
正常map调用的是AscendingSubMap,跟DescendingMap相同,只是相反的实现