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
  • 相关阅读:
    BZOJ3813 奇数国
    BZOJ2735 世博会
    BZOJ2081 [Poi2010]Beads
    BZOJ3276 磁力
    BZOJ2054 疯狂的馒头
    BZOJ2610 [Poi2003]Monkeys
    BZOJ2428 [HAOI2006]均分数据
    BZOJ2120 数颜色
    BZOJ2527 [Poi2011]Meteors
    补比赛——牛客OI周赛9-普及组
  • 原文地址:https://www.cnblogs.com/qxynotebook/p/9399121.html
Copyright © 2011-2022 走看看