创建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. 小伙伴们在催更Spring系列,于是我写下了这篇注解汇总!!

    大家好,我是冰河~~ 由于在更新其他专题的文章,Spring系列文章有很长一段时间没有更新了,很多小伙伴都在公众号后台留言或者直接私信我微信催更Spring系列文章. 看来是要继续更新Spring文章 ...

  2. pytest初始化与清除fixture(二)

    @pytest.fixture用法 1.导入pytest模块:import pytest 2.调用装饰器函数:@pytest.fixture(callable_or_scope=None,*args, ...

  3. sql server数据库性能优化之2-避免使用CTE公用表达式的递归【by zhang502219048】

    数据库优化中的一个实例,记录一下: 1. 原来用了CTE公用表达式的递归,reads高达约40万,看查询执行计划,使用了Nested Loops: 2. 优化去掉递归,改用其它方式实现,reads降低 ...

  4. 一次SQL查询优化原理分析(900W+数据,从17s到300ms)

    有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: ...

  5. Linux命令大全之帮助命令及压缩命令

    man(manual):帮助命令 help用于解释shell内部命令 格式:help shell内部命令 ls 命令  --help man 命令 info 命令 .zip    .gz    .bz ...

  6. 对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.8 发布

    Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...

  7. R-聚类

    一.定义:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类 二.距离:欧几里得度量(euclidean metric)也称欧氏距离       绝对值距离(manhattan)   ...

  8. 15.3、mysql之InnoDB和MyISAM表空间详解

    15.3.1.InnoDB引擎表空间: 1.表空间分类: 共享表空间: 某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在 data目录下. 默认的文件名为:ibd ...

  9. 11、mysql索引详解

    1.索引介绍: 2.建立索引的方法: 注意:索引名称不要相同: (1)在建表的时候,可以增加主键索引的语句如下: 1)例一: create table student1 ( id int(4) not ...

  10. MindSpore模型精度调优实战:如何更快定位精度问题

    摘要:为大家梳理了针对常见精度问题的调试调优指南,将以"MindSpore模型精度调优实战"系列文章的形式分享出来,帮助大家轻松定位精度问题,快速优化模型精度. 本文分享自华为云社 ...