Java集合-SortedMap

SortedMap(java.util.SortedMap)接口是Map的子接口 , SortedMap中增加了元素的排序 , 这意味着可以给SortedMap中的元素排序 。
SortedMap的实现TreeMapSortedMap接口的实现TreeMap(java.util.TreeMap).
创建TreeMap可以通过TreeMap的构造函数创建TreeMap实例:
SortedMapsortedMap=newTreeMap();创建TreeMap使用Comparator可以使用Comparator的实现作为TreeMap构造函数的参数 , 这个Comparator将用于对存储在SortedMap中的键、值对的键进行排序:
Comparatorcomparator=newMyComparatorImpl();SortedMapsortedMap=newTreeMap(comparator);排序SortedMap中的排序顺序要么是元素的自然排序顺序(如果它们实现了java.lang.Comparable) , 或由Comparator确定的顺序 。
升序和降序排序默认的元素迭代顺序是升序 , 开始是最小的元素 , 然后逐渐变大 , 也可以降序迭代 , 可以使用TreeMap.descendingKeySet()方法 。
迭代SortedMap迭代SortedMap和迭代一般的Map一样 , 既然SortedMap的key是有顺序的 , 所以可以按顺序迭代key,通过调用SortedMap的keySet()迭代:
SortedMapsortedMap=newTreeMap();sortedMap.put("a","one");sortedMap.put("b","two");sortedMap.put("c","three");Iteratoriterator=sortedMap.keySet().iterator();while(iterator.hasNext()){Stringkey=(String)iterator.next();Stringvalue=https://pcff.toutiao.jxnews.com.cn/p/20200910/(String)sortedMap.get(key);}如果需要降序迭代则调用sortedMap.descendingKeySet().iterator()的方法:
SortedMapsortedMap=newTreeMap();sortedMap.put("a","one");sortedMap.put("b","two");sortedMap.put("c","three");Iteratoriterator=sortedMap.descendingKeySet().iterator();while(iterator.hasNext()){Stringkey=(String)iterator.next();Stringvalue=https://pcff.toutiao.jxnews.com.cn/p/20200910/(String)sortedMap.get(key);}获取Comparator如果创建SortedMap时使用了Comparator , 则可以通过SortedMap的comparator()方法获取Comparator:
Comparatorcomparator=sortedMap.comparator();获取第一个KeySortedMap接口有个firstKey()方法可以获取第一个元素:
StringfirstKey=(String)sortedMap.firstKey();获取最后一个KeySortedMap接口有个lastKey()方法可以获取最后一个元素:
StringlastKey=(String)sortedMap.lastKey();HeadMapSortedMap接口有个headMap()方法 , 返回一个新的Map,这个方法有个参数key , 返回的Map中的元素小于这个参数key:
SortedMapsortedMap=newTreeMap();sortedMap.put("a","1");sortedMap.put("c","3");sortedMap.put("e","5");sortedMap.put("d","4");sortedMap.put("b","2");SortedMapheadMap=sortedMap.headMap("c");System.out.println(headMap);headMap中包含("a","1")和("b","2") , 因为"a"和"b"小于"c" 。
尾部MapSortedMap接口有个tailMap()方法 , 这个方法返回大于等于参数key的键值对:
SortedMapsortedMap=newTreeMap();sortedMap.put("a","1");sortedMap.put("c","3");sortedMap.put("e","5");sortedMap.put("d","4");sortedMap.put("b","2");SortedMaptailMap=sortedMap.tailMap("c");System.out.println(tailMap);tailMap中包含("c","3") , ("d","4")和("e","5") , 因为"c","d"和"e"大于或者等于参数"c" 。
子mapSortedMap中还有个subMap() , 这个方法返回SortedMap的一个子Map 。 subMap()方法中有两个参数是key的值 , 大于等于第一个key,小于第二个key:
SortedMapsortedMap=newTreeMap();sortedMap.put("a","1");sortedMap.put("c","3");sortedMap.put("e","5");sortedMap.put("d","4");sortedMap.put("b","2");SortedMapsubMap=sortedMap.subMap("b","e");System.out.println(subMap);subMap中包含("b","2) , ("c","3")和("d","4") , 因为"b","c"和"d"都大于等于"b"并且小于"e" 。
【Java集合-SortedMap】参考:


    推荐阅读