Guava - Map
创建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的更多相关文章
- Guava常用方法
简介 Guava,中文是石榴的意思,Guava项目,是基于java的Google的开源的工具类库,包含了许多被Google的java项目广泛依赖的核心库, 例如:集合.缓存.原生类型支持.并发库.通用 ...
- JAVA构造MAP并初始化MAP
第一种方法:static块初始化 public class Demo{ private static final Map<String, String> myMap; static { m ...
- Map初始化
转载至:http://blog.csdn.net/dujianxiong/article/details/54849079 第一种方法:static块初始化 public class Demo{ pr ...
- List转换Map的三种方式
1.for循环 ... 2.使用guava Map<Long, User> maps = Maps.uniqueIndex(userList, new Function<User, ...
- 使用guava过期map
最近需要将微信的accesstoken保存到缓存里面,防止重复请求微信接口获取token,造成token请求次数超标,其实随便一个缓存都可以轻松解决,但是现有的环境中没有redis,没有memcahe ...
- guava处理字符串与List之间,字符串与map之间的转换<转>
import static org.junit.Assert.*; import java.util.List; import java.util.Map; import org.junit.Test ...
- Guava中这些Map的骚操作,让我的代码量减少了50%
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合.缓存.并发.I/O等多个方面.使用这些API一方面 ...
- String 转Map(基于Guava类库)
字符串格式:key1=value1&key2=value2...... java代码 Map<String,String> targetOrderObj = Splitter.on ...
- Guava实现 过滤文本,排序,转换内容,分组计数转换map 等等
重要点 :看注释 从access.log中统计数据 对healthcheck.html的请求不计入统计 输出请求总量,以及GET和POST分别的总量 输出请求最频繁的10个接口及其次数,按次数降序 输 ...
随机推荐
- Python_selenium PO模式下 Tesecase 的相同执行代码做成selenium_base_case公共模块及调用
作用: PO模式下 Tesecase 的相同执行代码做成selenium_base_case公共模块及调用,提高代码简洁度,实现同样效果. 框架结构: 代码简单实践: common模块下 seleni ...
- Django基础之模板层
内容概要 模板层(模板语法) 模板语法传值模板语法过滤器(内置方法)模板语法标签(流程控制)自定义过滤器和标签(了解) 模板的导入与继承(面向对象) 内容详细 1 模板层之模板语法传值 http ...
- CLR里的MethodTable,MethodDescChunk,MethodDesc,FixUpPreCode都是什么意思
一:看下面一些概念 1MethodTable MethodTable可以说在CLR里面无处不在,这个东西主要是作为对象的数据类型存在,主要包含了EEClass 模块地址,类型名称,模块路径等. 2.E ...
- docker安装nextcloud私人网盘,开启https配置证书
docker安装nextcloud私人网盘 之前一直用的百度网盘最近svip超级会员到期了,续费要¥199元,对于一个打工人的我来说有点儿贵.作为技术人的一员,我就来发挥发挥自己的长处,来搭建一个私人 ...
- 学习响应式编程 Reactor (4) - reactor 转换类操作符(1)
Reactor 操作符 数据在响应式流中的处理,就像流过一条装配流水线.Reactor 既是传送带,又是一个个的装配工或机器人.原材料从源头(最初的 Publisher )流出,经过一个个的装配线中装 ...
- Golang学习(用代码来学习) - 第二篇
type Circle struct { radius float64 desc string } //定义结构体里面的方法 func (c Circle) getArea() float64 { r ...
- npm 操作代码
npm cache clean -force //强制清除缓,比如安装echarts失败后,清除,在安装
- JavaScript 沙盒模式
微前端已经成为前端领域比较火爆的话题,在技术方面,微前端有一个始终绕不过去的话题就是前端沙箱 什么是沙箱 Sandboxie(又叫沙箱.沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程 ...
- Centos7 unzip文件名中文乱码
Centos7 unzip文件名中文乱码 前言 今天在批量处理windos文件时为了方便操作,将windos下面的文件夹打成zip包上传至centos7中解压处理,发现解压后中文文件名变成了乱码,如下 ...
- @EnableDiscoveryClient与Nacos自动注册
前一阵看到有篇博客说cloud从Edgware版本开始,可以不加@EnableDiscoveryClient注解,只要配置好注册中心的相关配置即可自动开启服务注册功能,比较好奇其中的原理,研究了一番特 ...