Java中的SortedMap接口与示例

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)

SortedMap是集合框架中的一个接口。此接口扩展了Map 接口并提供了其元素的总排序(元素可以按键的排序顺序遍历)。实现此接口的Exampled类是TreeMap

Java中的SortedMap接口与示例

SortedMap的主要特征是,它按照自然顺序或指定的比较器对键进行排序。因此,如果您想要满足以下条件的map,请考虑使用TreeMap

  • 不允许使用null键或null值。
  • 密钥按自然排序或指定的比较器排序。

SortedMap的方法

  1. subMap(K fromKey,K toKey):返回此Map部分的视图,其键的范围从fromKey(包含)到toKey(不包括)。
  2. headMap(K toKey):返回此Map部分的视图,其键严格小于toKey。
  3. tailMap(K fromKey):返回此Map部分的视图,其键大于或等于fromKey。
  4. firstKey():返回此Map中当前的第一个(最低)键。
  5. lastKey():返回此Map中当前的最后一个(最高)键。
  6. comparator():返回用于对此Map中的键进行排序的Comparator,如果此Map使用其键的自然顺序,则返回null。

SortedMap的代码

public interface SortedMap extends Map
{
    Comparator comparator();
    SortedMap subMap(K fromKey, K toKey);
    SortedMap headMap(K toKey);
    SortedMap tailMap(K fromKey);
    K firstKey();
    K lastKey();
}
// Java code to demonstrate SortedMap
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;

public class SortedMapExample
{
    public static void main(String[] args)
    {
        SortedMap<Integer, String> sm =
                    new TreeMap<Integer, String>();
        sm.put(new Integer(2), "practice");
        sm.put(new Integer(3), "quiz");
        sm.put(new Integer(5), "code");
        sm.put(new Integer(4), "contribute");
        sm.put(new Integer(1), "geeksforgeeks");
        Set s = sm.entrySet();

        // Using iterator in SortedMap
        Iterator i = s.iterator();

        // Traversing map. Note that the traversal
        // produced sorted (by keys) output .
        while (i.hasNext())
        {
            Map.Entry m = (Map.Entry)i.next();

            int key = (Integer)m.getKey();
            String value = (String)m.getValue();

            System.out.println("Key : " + key +
                            "  value : " + value);
        }
    }
}

输出:

Key : 1  value : geeksforgeeks
Key : 2  value : practice
Key : 3  value : quiz
Key : 4  value : contribute
Key : 5  value : code
  •   本文标题:Java中的SortedMap接口与示例 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/5374.html

    "Java中的SortedMap接口与示例"的笔记

    • Arvin Chen

      2019年3月20日 下午11:57

      SortedMap的排序示例

      HashMap比SortedMap快,不用排序的时候用HashMap
      设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

      package json;
      
      import java.util.*;
      
      /**
       * Created by wanggs on 2017/8/23.
       */
      public class Test {
          @org.junit.Test
          public void test(){
              HashMap<String,String> map=new HashMap<String, String>();
              map.put("3", "33");
              map.put("1","11");
              map.put("2", "22");
              for (Map.Entry<String,String> entry: map.entrySet()) {
                  System.out.println("排序之前:"+entry.getKey()+" 值"+entry.getValue());
      
              }
              System.out.println("======================================================");
              SortedMap<String,String> sort=new TreeMap<String,String>(map);
              Set<Map.Entry<String,String>> entry1=sort.entrySet();
              Iterator<Map.Entry<String,String>> it=entry1.iterator();
              while(it.hasNext())
              {
                  Map.Entry<String,String> entry=it.next();
                  System.out.println("排序之后:"+entry.getKey()+" 值"+entry.getValue());
              }
          }
      
          /**
           * 输出结果:
           *   排序之前:3 值33
           *   排序之前:1 值11
           *   排序之前:2 值22
           *   ======================================================
           *   排序之后:1 值11
           *   排序之后:2 值22
           *   排序之后:3 值33
           */
      }
      package json;
      
      import java.util.*;
      
      /**
       * Created by wanggs on 2017/8/23.
       */
      public class Test {
          @org.junit.Test
          public void test() {
              SortedMap<String,String> map = null ;
              map = new TreeMap<String,String>() ;   //通过子类实例化接口对象
              map.put("D","DDDDD") ;
              map.put("A","AAAAA") ;
              map.put("C","CCCCC") ;
              map.put("B","BBBBB") ;
              System.out.println("第一个元素的key:" + map.firstKey()) ;
              System.out.println("key对于的值为:" + map.get(map.firstKey())) ;
              System.out.println("最后一个元素的key:" + map.lastKey()) ;
              System.out.println("key对于的值为:" + map.get(map.lastKey())) ;
              System.out.println("返回小于指定范围的集合(键值小于“C”)") ;
              for(Map.Entry<String,String> me:map.headMap("C").entrySet()){
                  System.out.println("\t|- " + me.getKey() + "-->" + me.getValue()) ;
              }
              System.out.println("返回大于指定范围的集合(键值大于等于“C”)") ;
              for(Map.Entry<String,String> me:map.tailMap("C").entrySet()){
                  System.out.println("\t|- " + me.getKey() + "-->" + me.getValue()) ;
              }
              System.out.println("返回部分集合(键值“B”和“D”之间,包括B不包括D)") ;
              for(Map.Entry<String,String> me:map.subMap("B","D").entrySet()){
                  System.out.println("\t|- " + me.getKey() + "-->" + me.getValue()) ;
              }
          }
          /**
           * 第一个元素的key:A
           key对于的值为:AAAAA
           最后一个元素的key:D
           key对于的值为:DDDDD
           返回小于指定范围的集合(键值小于“C”)
           |- A-->AAAAA
           |- B-->BBBBB
           返回大于指定范围的集合(键值大于等于“C”)
           |- C-->CCCCC
           |- D-->DDDDD
           返回部分集合(键值“B”和“D”之间,包括B不包括D)
           |- B-->BBBBB
           |- C-->CCCCC
      
           */
      }
    扫描二维码添加微信 
  • ,领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘优惠券!添加微信后,分享淘宝选中的机械键盘给淘宝机器人即可领取!
    支持我们,就用微信淘宝!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读