zoukankan      html  css  js  c++  java
  • Guava HashMultiMap(MultiMap)反转映射

    (一)MultiMap 多重map,一个key可以对应多个值(多个值放在一个list中),可用于分组

    举例:

     Multimap<String, Integer> map = HashMultimap.create(); //Multimap是把键映射到任意多个值的一般方式
            map.put("hello", 1); //key相同时不会覆盖原value
            map.put("hello", 2);
            map.put("hello", 3);
            map.put("world", 4);
            map.put("world", 5);
            map.put("java", 7);
            map.put("java", 8);
            System.out.println(map); //{world=[4, 5], java=[8, 7], hello=[1, 2, 3]}
            System.out.println(map.get("hello")); //返回的是集合  // [1, 2, 3]
            System.out.println(map.get("jre")); //返回的是集合  // []
            System.out.println(map.asMap().get("jre")); //返回  null
            System.out.println(map.size()); //返回所有”键-单个值映射”的个数,而非不同键的个数 // 7
            System.out.println(map.keySet().size()); //返回不同key的个数 // 3
    
            Map<String, Collection<Integer>> mapView = map.asMap();
            System.out.println(mapView);// {world=[4, 5], java=[8, 7], hello=[1, 2, 3]}
    

    (二)还可以用于反转映射

    ArrayListMultimap<String, Integer> multimap = ArrayListMultimap.create();
    multimap.putAll("b", Ints.asList(2, 4, 6));
    multimap.putAll("a", Ints.asList(4, 2, 1));
    multimap.putAll("c", Ints.asList(2, 5, 3));
     
    TreeMultimap<Integer, String> inverse = Multimaps.invertFrom(multimap, TreeMultimap<String, Integer>.create());
    //注意我们选择的实现,因为选了TreeMultimap,得到的反转结果是有序的
    结果:
    /*
    * inverse maps:
    *  1 => {"a"}
    *  2 => {"a", "b", "c"}
    *  3 => {"c"}
    *  4 => {"a", "b"}
    *  5 => {"c"}
    *  6 => {"b"}
    
    
  • 相关阅读:
    使用Java和JS访问cookies
    详细介绍Java内存泄露原因
    Java与Unicode
    电子商务那点事
    request的一些常用方法
    一些java当中的名词解释
    rpc远程服务
    war包和jar包的区别
    为什么内存贵硬盘便宜
    分层开发的优势
  • 原文地址:https://www.cnblogs.com/hts-technology/p/9327650.html
Copyright © 2011-2022 走看看