zoukankan      html  css  js  c++  java
  • guava的map中value转换问题和排序问题

    场景:一个枚举,我需要返回字典列表

      要求1:对枚举类型进行转化

      要求2:返回的值,根据 key 升序排列

    -----------------------------------

    话不多说,直接撸代码

    EnumTest.java 内容如下:

    package com.lianjia.mls.support.web.controller;
    
    import lombok.AllArgsConstructor;
    import lombok.Getter;
    
    import java.util.HashMap;
    import java.util.Map;
    
    @AllArgsConstructor
    @Getter
    public enum EnumTest {
    
        test_add_test("001", "字典1"),
        test_del_test("002", "字典2"),
        test003("003", "字典3"),
        test_update_test("006", "字典623"),
        test005("005", "字典523"),
        test004("004", "字典4"),
        test020("020", "字典20"),
    
        ;
        private String code;
        private String desc;
    
        private static final Map<String, EnumTest> allTypeMap = new HashMap<>();
    
        static {
            for (EnumTest enumTest : values()) {
                allTypeMap.put(enumTest.getCode(), enumTest);
            }
        }
    
        public static Map<String, EnumTest> getAllTypeWithMap() {
            return allTypeMap;
        }
    }
    

    TestMain.java

    package com.lianjia.mls.support.web.controller;
    
    import com.google.common.collect.ImmutableSortedMap;
    import com.google.common.collect.Maps;
    
    import java.util.Map;
    
    
    public class TestMain {
        public static void main(String[] args) {
    
            //未排序
            Map<String, String> resultNoSort = Maps.transformValues(EnumTest.getAllTypeWithMap(), enumTest -> enumTest.getDesc());
            System.out.println(resultNoSort);
    
            //已排序
            Map<String, String> resultSorted = ImmutableSortedMap.<String, String>naturalOrder()
                    .putAll(Maps.transformValues(EnumTest.getAllTypeWithMap(), enumTest -> enumTest.getDesc())).build();
            System.out.println(resultSorted);
        }
    }

    使用 guava 强大的功能,可以使代码变得更加简洁!!!

    参考:http://www.91r.net/ask/4906961.html

    Read the fucking manual and source code
  • 相关阅读:
    MySql 应用语句
    MySql 存储过程 退出
    MySql 存储过程 光标只循环一次
    MySql获取两个日期间的时间差
    VM VirtualBox 全屏模式 && 自动缩放模式 相互切换
    区分不同操作系统、编译器不同版本的宏
    debian下配置网络 安装无线网卡驱动 Broadcom BCMXX系列
    YII 主题设置
    Unix线程概念、控制原语、属性
    远程IPC种植木马
  • 原文地址:https://www.cnblogs.com/qxynotebook/p/9399121.html
Copyright © 2011-2022 走看看