SortedMap 扩展了 Map接口。它确保条目按升序键顺序维护。

当调用map中没有的条目时,有几个方法会抛出 NoSuchElementException 异常。

当对象与映射中的元素不兼容时,会引发 ClassCastException 异常。

如果在映射中不允许 null 的情况下尝试使用 null 对象,则会抛出 NullPointerException。

下表总结了 SortedMap 声明的方法 

序号方法及说明
1

Comparator comparator( )

返回调用排序映射的比较器。如果调用映射使用自然顺序,则返回 null。

2

Object firstKey( )

返回调用映射中的第一个键。

3

SortedMap headMap(Object end)

返回键小于 end 的映射条目的排序映射。

4

Object lastKey( )

返回调用映射中的最后一个键。

5

SortedMap subMap(Object start, Object end)

返回包含这些条目的映射键大于或等于 start 且小于 end。

6

SortedMap tailMap(Object start)

返回一个映射,其中包含键大于或等于 start 的条目。

示例 1

以下示例展示了如何使用 TreeMap 获取 SortedMap 的值 

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;

public class MapDemo {

   public static void main(String args[]) {
      // 创建map
      SortedMap<String, Double> map = new TreeMap<>();

      // 将元素放入map
      map.put("Zara", Double.valueOf(3434.34));
      map.put("Mahnaz", Double.valueOf(123.22));
      map.put("Ayan", Double.valueOf(1378.00));
      map.put("Daisy", Double.valueOf(99.22));
      map.put("Qadir", Double.valueOf(-19.08));
      
      // 获取一组条目
      Set<Map.Entry<String, Double>> set = map.entrySet();
      
      // 获取迭代器
      Iterator<Map.Entry<String, Double>> i = set.iterator();
     
      //显示元素
      while(i.hasNext()) {
         Map.Entry<String, Double> me = i.next();
         System.out.print(me.getKey() + ": ");
         System.out.println(me.getValue());
      }
   }
} 

输出

Ayan: 1378.0
Daisy: 99.22
Mahnaz: 123.22
Qadir: -19.08
Zara: 3434.34 

示例 2

以下示例展示了如何使用 TreeMap 设置 SortedMap 的值 

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;

public class MapDemo {

   public static void main(String args[]) {
      //创建map
      SortedMap<String, Double> map = new TreeMap<>();

      // 将元素放入map
      map.put("Zara", Double.valueOf(3434.34));
      map.put("Mahnaz", Double.valueOf(123.22));
      map.put("Ayan", Double.valueOf(1378.00));
      map.put("Daisy", Double.valueOf(99.22));
      map.put("Qadir", Double.valueOf(-19.08));
      
      // 获取一组条目
      Set<Map.Entry<String, Double>> set = map.entrySet();
      
      // 获取迭代器
      Iterator<Map.Entry<String, Double>> i = set.iterator();
     
      //显示元素
      while(i.hasNext()) {
         Map.Entry<String, Double> me = i.next();
         me.setValue(me.getValue() * 10);
         System.out.print(me.getKey() + ": ");
         System.out.println(me.getValue());
      }
   }
} 

输出

Ayan: 13780.0
Daisy: 992.2
Mahnaz: 1232.2
Qadir: -190.79999999999998
Zara: 34343.4 

示例 3

以下是一个示例,显示如何使用 TreeMap 获取排序映射条目的键 

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;

public class MapDemo {

   public static void main(String args[]) {
      //创建map
      SortedMap<String, Double> map = new TreeMap<>();

      // 将元素放入map
      map.put("Zara", Double.valueOf(3434.34));
      map.put("Mahnaz", Double.valueOf(123.22));
      map.put("Ayan", Double.valueOf(1378.00));
      map.put("Daisy", Double.valueOf(99.22));
      map.put("Qadir", Double.valueOf(-19.08));
      
      // 获取一组条目
      Set<Map.Entry<String, Double>> set = map.entrySet();
      
      // 获取迭代器
      Iterator<Map.Entry<String, Double>> i = set.iterator();
     
      //显示元素
      while(i.hasNext()) {
         Map.Entry<String, Double> me = i.next();
         System.out.println(me.getKey());
      }
   }
} 

输出

Ayan
Daisy
Mahnaz
Qadir
Zara