创建Map

通常在创建map时使用new HashMap<>();的方法,guava提供了一个简洁的方法

Maps.newHashMap();

List转换Map

        List<Solution> list= new ArrayList<>();
//普通写法
Map<Integer,Solution> map= Maps.newHashMap();
for(Solution a:list){
map.put(a.id,a);
} //Maps.uniqueIndex(list, function);
//guava的写法,注意: 此时list中的元素的属性不能有重复的,如果有的话会报错
Map<Integer,Solution> map2 =Maps.uniqueIndex(list, new Function<Solution, Integer>() {
@Override
public Integer apply(Solution solution) {
return solution.id;
}
});

一个key对应多个value的Multimap

在编写代码的过程中经常会用到

        Map<Integer,List<String>> maps= new HashMap<>();
if(maps.get(1)==null){
List<String> list= new ArrayList<>();
list.add("1");
maps.put(1,list);
}else{
maps.get(1).add("I");
}

Guava的写法

//        ArrayListMultimap<Object, Object> objectObjectArrayListMultimap = ArrayListMultimap.create();
HashMultimap<Integer, String> objectObjectHashMultimap = HashMultimap.create();
//只需要put即可,不用判断是否为null情况
objectObjectHashMultimap.put(1,"1");
objectObjectHashMultimap.put(1,"2");
objectObjectHashMultimap.put(1,"3");
System.out.println(objectObjectHashMultimap.get(1));

ArrayListMultimap 返回的是一个List,HashMultimap返回的是一个Set

Multimap的实现

Implementation Keys 的行为类似 Values的行为类似
ArrayListMultimap HashMap ArrayList
HashMultimap HashMap HashSet
LinkedListMultiap LinkedHashMap LinkedList
LinkedHashMultimap LinkedHashMap LinkedHashSet
TreeMultimap TreeMap TreeSet
ImmutableListMultimap ImmutableMap ImmutableList
ImmutableSetMultimap ImmutableMap ImmutableSet

通过key找value 也可通过value找key的Map-BiMap

BiMap也可以反向把值映射到键,只要确保值唯一。

        BiMap<String,Integer> biMap= HashBiMap.create();
biMap.put("I",1);
biMap.put("V",5);
biMap.put("X",10);
biMap.put("L",50);
biMap.put("C",100);
biMap.put("D",500);
biMap.put("M",1000);
/*HashBiMap.create(new HashMap<String,Integer>(){{
put("I",1);
put("V",5);
put("X",10);
put("L",50);
put("C",100);
put("D",500);
put("M",1000);
}});*/
BiMap<Integer, String> inverse = biMap.inverse();//翻转
System.out.println(inverse);//{1=I, 5=V, 10=X, 50=L, 100=C, 500=D, 1000=M}

Guava - Map的更多相关文章

  1. Guava常用方法

    简介 Guava,中文是石榴的意思,Guava项目,是基于java的Google的开源的工具类库,包含了许多被Google的java项目广泛依赖的核心库, 例如:集合.缓存.原生类型支持.并发库.通用 ...

  2. JAVA构造MAP并初始化MAP

    第一种方法:static块初始化 public class Demo{ private static final Map<String, String> myMap; static { m ...

  3. Map初始化

    转载至:http://blog.csdn.net/dujianxiong/article/details/54849079 第一种方法:static块初始化 public class Demo{ pr ...

  4. List转换Map的三种方式

    1.for循环 ... 2.使用guava Map<Long, User> maps = Maps.uniqueIndex(userList, new Function<User, ...

  5. 使用guava过期map

    最近需要将微信的accesstoken保存到缓存里面,防止重复请求微信接口获取token,造成token请求次数超标,其实随便一个缓存都可以轻松解决,但是现有的环境中没有redis,没有memcahe ...

  6. guava处理字符串与List之间,字符串与map之间的转换<转>

    import static org.junit.Assert.*; import java.util.List; import java.util.Map; import org.junit.Test ...

  7. Guava中这些Map的骚操作,让我的代码量减少了50%

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合.缓存.并发.I/O等多个方面.使用这些API一方面 ...

  8. String 转Map(基于Guava类库)

    字符串格式:key1=value1&key2=value2...... java代码 Map<String,String> targetOrderObj = Splitter.on ...

  9. Guava实现 过滤文本,排序,转换内容,分组计数转换map 等等

    重要点 :看注释 从access.log中统计数据 对healthcheck.html的请求不计入统计 输出请求总量,以及GET和POST分别的总量 输出请求最频繁的10个接口及其次数,按次数降序 输 ...

随机推荐

  1. Django OperationalError错误解决

    Django项目实践中通过页面http://127.0.0.1:8000/admin/添加数据时报错,见下图 解决方法: 参考链接: https://stackoverflow.com/questio ...

  2. 【NX二次开发】Block UI 面收集器

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  3. Spring WebFlux 教程:如何构建反应式 Web 应用程序

    Spring WebFlux 教程:如何构建反应式 Web 应用程序 反应式系统提供了我们在高数据流世界中所需的无与伦比的响应能力和可扩展性.然而,反应式系统需要经过专门培训的工具和开发人员来实现这些 ...

  4. VRRP协议与原理

    VRRP协议与原理 目录: 一.VRRP协议概述 1.1.VRRP协议 1.2.单网关和多网关的缺陷 1.3.VRRP基本概述 二.VRRP工作原理 2.1.VRRP主备份备份工作工程 2.2.VRR ...

  5. redis字典快速映射+hash釜底抽薪+渐进式rehash | redis为什么那么快

    前言 相信你一定使用过新华字典吧!小时候不会读的字都是通过字典去查找的.在Redis中也存在相同功能叫做字典又称为符号表!是一种保存键值对的抽象数据结构 本篇仍然定位在[redis前传]系列中,因为本 ...

  6. 4.5 RNN循环神经网络(recurrent neural network)

     自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1  RNN循环神经网络 ...

  7. 16、lamp的搭建

    搭建web02服务器作为web01的负载均衡服务器: httpd和nginx配置比较相似,也有虚拟主机,一个http服务需要配置多个站点,基于ip(基本用不到).端口(内部网站).域名(外部网站): ...

  8. hive学习笔记之九:基础UDF

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. Murmur3 Hash 128位java和C#方法

    java调用com.google.guava 引入依赖 <dependency> <groupId>com.google.guava</groupId> <a ...

  10. Pandas高级教程之:GroupBy用法

    Pandas高级教程之:GroupBy用法 目录 简介 分割数据 多index get_group dropna groups属性 index的层级 group的遍历 聚合操作 通用聚合方法 同时使用 ...