SortedMap()接口是Map的子接口,SortedMap中增加了元素的排序,这意味着可以给SortedMap中的元素排序。
SortedMap的实现TreeMap
SortedMap
接口的实现TreeMap
().
创建TreeMap
可以通过TreeMap
的构造函数创建TreeMap
实例:
SortedMap sortedMap = new TreeMap();
创建TreeMap使用Comparator
可以使用Comparator
的实现作为TreeMap
构造函数的参数
,这个Comparator
将用于对存储在SortedMap中的键、值对的键进行排序:
Comparator comparator = new MyComparatorImpl();
SortedMap sortedMap = new TreeMap(comparator);
排序
SortedMap中的排序顺序要么是元素的自然排序顺序(如果它们实现了),或由Comparator
确定的顺序。
升序和降序排序
默认的元素迭代顺序是升序,开始是最小的元素,然后逐渐变大,也可以降序迭代,可以使用()
方法。
迭代SortedMap
迭代SortedMap
和迭代一般的Map一样,既然SortedMap
的key是有顺序的,所以可以按顺序迭代key,通过调用SortedMap
的 keySet()
迭代:
SortedMap sortedMap = new TreeMap();
("a", "one");
("b", "two");
("c", "three");
Iterator iterator = ().iterator();
while(()) {
String key = (String) ();
String value = (String) (key);
}
如果需要降序迭代则调用().iterator()
的方法:
SortedMap sortedMap = new TreeMap();
("a", "one");
("b", "two");
("c", "three");
Iterator iterator = ().iterator();
while(()) {
String key = (String) ();
String value = (String) (key);
}
获取Comparator
如果创建SortedMap
时使用了Comparator
,则可以通过SortedMap
的comparator()
方法获取Comparator
:
Comparator comparator = ();
获取第一个Key
SortedMap
接口有个firstKey()方法可以获取第一个元素:
String firstKey = (String) ();
获取最后一个Key
SortedMap
接口有个lastKey()方法可以获取最后一个元素:
String lastKey = (String) ();
Head Map
SortedMap
接口有个headMap()方法,返回一个新的Map,这个方法有个参数key,返回的Map中的元素小于这个参数key:
SortedMap sortedMap = new TreeMap();
("a", "1");
("c", "3");
("e", "5");
("d", "4");
("b", "2");
SortedMap headMap = ("c");
(headMap);
headMap中包含 ("a", "1")和("b", "2"),因为"a"和"b"小于"c"。
尾部Map
SortedMap
接口有个tailMap()方法,这个方法返回大于等于参数key的键值对:
SortedMap sortedMap = new TreeMap();
("a", "1");
("c", "3");
("e", "5");
("d", "4");
("b", "2");
SortedMap tailMap = ("c");
(tailMap);
tailMap中包含 ("c", "3"),("d", "4") 和("e", "5"),因为"c", "d"和"e"大于或者等于参数"c" 。
子map
SortedMap
中还有个subMap(),这个方法返回SortedMap的一个子Map。subMap()方法中有两个参数是key的值,大于等于第一个key,小于第二个key:
SortedMap sortedMap = new TreeMap();
("a", "1");
("c", "3");
("e", "5");
("d", "4");
("b", "2");
SortedMap subMap = ("b", "e");
(subMap);
subMap中包含 ("b", "2), ("c", "3") 和 ("d", "4") ,因为"b", "c" 和"d"都大于等于"b"并且小于 "e"。
参考:/java-collections/
/cgsyck/article/details/108449964