• Map排序


     1 package com.jdk7.chapter4;
     2 
     3 import java.util.Comparator;
     4 import java.util.HashMap;
     5 import java.util.Iterator;
     6 import java.util.Map;
     7 import java.util.TreeMap;
     8 
     9 /**
    10  * 继承Comparator的compare方法,简化比较细节
    11  * Map的几种类型中只有TreeMap是会排序的,默认为升序
    12  * 如果要对Map其他类型进行排序,需要将其他类型Map作为TreeMap构建的参数,从而达到按'键'升序排列
    13  * 如果希望按照自定义规则排序,首先自定义规则函数所在类需要实现接口Comparator的compare方法,然后需要将自定义排序规则所在类对象作为TreeMap构建的参数
    14  * @author Administrator
    15  *
    16  */
    17 public class MapSortTest implements Comparator {
    18 
    19     /**
    20      * 创建MapSortTest时会加载覆盖父类的compare方法,作为排序规则
    21      */
    22     @Override
    23     public int compare(Object o1, Object o2) {
    24         //将o1和o2转换为int类型
    25         int num1 = ((Integer)o1).intValue();
    26         int num2 = ((Integer)o2).intValue();
    27         if(num1<num2){
    28             return 1;
    29         }else if(num1>num2){
    30             return -1;
    31         }
    32         return 0;
    33     }
    34     
    35     public static void printMap(Map map){
    36         Map.Entry entry = null;
    37         Iterator it = map.entrySet().iterator();
    38         while(it.hasNext()){
    39             entry = (Map.Entry)it.next();
    40             System.out.println("key: "+entry.getKey()+" value: "+entry.getValue());
    41         }
    42         System.out.println();
    43     }
    44     
    45     public static void main(String[] args) {
    46         MapSortTest mt = new MapSortTest();
    47         Map mapm = new HashMap();
    48         mapm.put(001, "Hello");
    49         mapm.put(004, "Lily");
    50         mapm.put(003, "Rucy");
    51         mapm.put(002, "Hanmei");
    52         System.out.println("初始化后的Map>");
    53         mt.printMap(mapm);
    54         System.out.println("默认排序后的Map>");
    55         Map mapt = new TreeMap(mapm);
    56         mt.printMap(mapt);
    57         System.out.println("自定义排序后的Map>");
    58         //构建TreeMap对象时,参数为排序函数compare
    59 //        mapt = new TreeMap(new MapSortTest());
    60         mapt = new TreeMap(mt);
    61         mapt.putAll(mapm);
    62         mt.printMap(mapt);
    63     }
    64 }
    65 
    66 执行结果:
    67 初始化后的Map>
    68 key: 1 value: Hello
    69 key: 2 value: Hanmei
    70 key: 3 value: Rucy
    71 key: 4 value: Lily
    72 
    73 默认排序后的Map>
    74 key: 1 value: Hello
    75 key: 2 value: Hanmei
    76 key: 3 value: Rucy
    77 key: 4 value: Lily
    78 
    79 自定义排序后的Map>
    80 key: 4 value: Lily
    81 key: 3 value: Rucy
    82 key: 2 value: Hanmei
    83 key: 1 value: Hello
  • 相关阅读:
    edgedb 内部pg 数据存储的探索 (四) 源码编译
    edgedb 内部pg 数据存储的探索 (二) 创建数据库命令说明
    edgedb 内部pg 数据存储的探索 (三) 源码包setup.py 文件
    python 集成cython && push 测试pip 仓库
    python 集成cython 简单测试
    click python cli 开发包
    转载一篇阿里云Terraform 开发指南
    zabbix 4.2 支持 timescledb 了
    edgedb 内部pg 数据存储的探索 (一)基本环境搭建
    Podman and Buildah for Docker users
  • 原文地址:https://www.cnblogs.com/celine/p/8459088.html
Copyright © 2020-2023  润新知