Java中的SortedMap接口与示例

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)
  •   Java 集合框架

    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 集合框架
  •   本文标题:Java中的SortedMap接口与示例 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/5374.html

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

    • 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
      
           */
      }
      Arvin Chen 2019年3月20日 下午11:57
      微信返利机器人
      免费:淘宝,京东,拼多多优惠券
      腾讯,爱奇艺,优酷的VIP视频免费解析,免费看
      即刻扫描二维码,添加微信机器人!

    发表笔记

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