TreeMap源码分析——基础分析
常见的数据结构有数组、链表、树。集合类中有基于数组的ArrayList,基于链表的LinkedList,还有链表和数组结合的HashMap。
Treemap基于红黑树实现。查看“键”或“键值对”时,他们会被排序(次序 由Comparable或Comparator决定)。
TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
在介绍TreeMap前先介绍Comparable和Comparator接口。
Comparable接口:
public interface Comparable<T>{
public int compareTo(T o);
}
Comparable接口支持泛型,只有一个方法,该方法返回负数、零、正数分别表示当前对象“小于”、“等于”、“大于”传入对象o。
Comparator接口:
public interface Comparator<T>{
int compare(T o1, T o2);
boolean equals(Object obj);
}
compare(T o1, T o2)方法比较o1和o2两个对象,o1“大于”o2,返回正数,相等返回零,“小于”返回负数。
equals(Object obj)返回true的唯一情况是obj也是一个比较器(Comparator)并且比较结果和此比较器的结果的大小次序是一致的。
即comp1.equals(comp2)意味着sgn(comp1.compare(o1, *o2))==sgn(comp2.compare(o1,o2))。
符号sgn(expression)表示数学上的sigmoid函数,该函数根据expression的值是负数、零或者正数,分别返回-1、0或1.
小结一下,实现Comparable结构的类可以和其他对象进行比较,即实现Comparable可以进行比较的类。、
而实现Comparator接口的类是比较器,用于比较两个对象的大小。
TreeMap
TreeMap类定义:
public class TreeMap<K, V> extends AbstractMap<K, V> implements Naviga
常见的数据结构有数组、链表、树。集合类中有基于数组的ArrayList,基于链表的LinkedList,还有链表和数组结合的HashMap。
Treemap基于红黑树实现。查看“键”或“键值对”时,他们会被排序(次序 由Comparable或Comparator决定)。
TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
在介绍TreeMap前先介绍Comparable和Comparator接口。
Comparable接口:
public interface Comparable<T>{
public int compareTo(T o);
}
Comparable接口支持泛型,只有一个方法,该方法返回负数、零、正数分别表示当前对象“小于”、“等于”、“大于”传入对象o。
Comparator接口:
public interface Comparator<T>{
int compare(T o1, T o2);
boolean equals(Object obj);
}
compare(T o1, T o2)方法比较o1和o2两个对象,o1“大于”o2,返回正数,相等返回零,“小于”返回负数。
equals(Object obj)返回true的唯一情况是obj也是一个比较器(Comparator)并且比较结果和此比较器的结果的大小次序是一致的。
即comp1.equals(comp2)意味着sgn(comp1.compare(o1, *o2))==sgn(comp2.compare(o1,o2))。
符号sgn(expression)表示数学上的sigmoid函数,该函数根据expression的值是负数、零或者正数,分别返回-1、0或1.
小结一下,实现Comparable结构的类可以和其他对象进行比较,即实现Comparable可以进行比较的类。、
而实现Comparator接口的类是比较器,用于比较两个对象的大小。
TreeMap
TreeMap类定义:
public class TreeMap<K, V> extends AbstractMap<K, V> implements Naviga