40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。
需要强调的是,TreeMap是按键而不是按值有序,无论哪一种,都是对键而非值进行比较。
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。
除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。
第一个为默认构造方法,如果使用默认构造方法,要求Map中的键实现parabe接口,TreeMap内部进行各种比较时会调用键的parable接口中的pareTo方法。
第二个接受一个比较器对象parator,如果parator不为null,在TreeMap内部进行比较时会调用这个parator的pare方法,而不再调用键的pareTo方法,也不再要求键实现parable接口。
应该用哪一个呢?第一个更为简单,但要求键实现parable接口,且期望的排序和键的比较结果是一致的,第二个更为灵活,不要求键实现parable接口,比较器可以用灵活复杂的方式进行实现。