Java集合-SortedMap

时间:2025-04-04 07:22:33

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,则可以通过SortedMapcomparator()方法获取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