Google的java工具类Guava
前言
google开发java项目肯定也不想重复造轮子,所以肯定也有工具类,就是它了:Guava
我将举例几个实际的例子,发挥这个工具类好用的功能。更多的方法和功能,还有内部的实现可以直接参考https://github.com/google/guava
举例
ps:这边都以单个情况举例,如以map举例,那么List等都有类似的功能。
1、创建
原来你可能是这样的:
Map<String, Map<Long, List<String>>> map = new HashMap<String, Map<Long,List<String>>>();
现在你可以:
Map<String, Map<Long, List<String>>> map = Maps.newHashMap();
2、初始化
原来你可能是这样的:
Map<String,String> map = new HashMap<>();
map.put("key1", "val1");
map.put("key2", "val2");
现在你可以:
Map<String,String> map = ImmutableMap.of("key1", "val1", "key2", "val2");
当然绝大多数情况下,这样的用法用于list较多,map这样的写法,可读性有点差,也多用于测试用例中。
3、比较
原来你可能是这样的:
int a = 1;
int b = 2;
int compareTo = Integer.valueOf(a).compareTo(Integer.valueOf(b));
现在你可以:
int compare = Ints.compare(a, b);
其他有Ints,Doubles,Floats,Shorts,Bytes以及Bools等工具类用于操作基本类型的数据很方便
4、list转String
List<Integer> list = listOf(1, 2, 3);
int[] arr = Ints.toArray(list);
5、字符比较分离
//判断字符a~z
CharMatcher charMatcher = CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z'));
boolean result = charMatcher.matches('a');
System.out.println(result); //分离字符串并处理空格和空的情况
Iterable<String> split = Splitter.on(",")
.omitEmptyStrings()
.trimResults()
.split("1,,,2, 3, ,5"); for (String temp : split) {
System.out.println(temp);
}
//转小驼峰
tableName = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, tableName);
6、一键多值的map
Multimap<String, String> multimap = ArrayListMultimap.create();
multimap.put("123", "123");
multimap.put("123", "124");
System.out.println(multimap.get("123"));
//[123, 124]
其他很多奇奇怪怪的功能在下面都有,上面只是抛砖引玉。
参考文档博客:
https://www.cnblogs.com/SummerinShire/p/6054983.html
https://blog.csdn.net/dgeek/article/details/76221746
http://ifeve.com/google-guava-collectionutilities/
Google的java工具类Guava的更多相关文章
- java工具类系列 (四.SerializationUtils)
java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- 排名前 16 的 Java 工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- 排名前16的Java工具类
原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...
- 第一章 Java工具类目录
在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 干货:排名前16的Java工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- Java工具类:给程序增加版权信息
我们九天鸟的p2p网贷系统,基本算是开发完成了. 现在,想给后端的Java代码,增加版权信息. 手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...
- 常用高效 Java 工具类总结
一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码 ...
随机推荐
- Spring Ioc 常用注解
在开发中spring ioc的配置方式有多种方式,常用的一般都是byName.byType .以及其自动装配可以查看http://www.cnblogs.com/gubai/p/9140840.htm ...
- C++数论板题(弹药科技):Lengendre定理和欧拉函数
弹药科技 时间限制: 1 Sec 内存限制: 128 MB 题目描述 经过精灵族全力抵挡,精灵终于坚持到了联络系统的重建,于是精灵向人类求助, 大魔法师伊扎洛决定弓}用博士的最新科技来抗敌. 伊扎洛: ...
- 1021. Deepest Root DFS 求最长无环路径
第一次出现超时 ac不了的题 思路一:对于每个节点用一次dfs dfs中 记录到当前的最长路径,若大于最长,则清除set,并加入当前节点 思路二:先查找只有一个相邻节点的节点进行dfs,由于可能存在闭 ...
- nginx server
配置nginx 首先apt install nginx 然后安装php apt-get install php7.0-fpm php7.0-mysql php7.0-common php7.0-mbs ...
- 深入C#
深入C# String类 C#中的String类他是专门处理字符串的(String),他在System的命名空间下,在C#中我们使用的是string 小写的string只是大写的String的一个别 ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...
- Particle Filters
|—粒子滤波原理 |—基础代码的建立—|—前进 | |—转弯 | |—噪音(误差 ...
- 网络操作系统 第六章 Window Server 2008 活动目录
本章小结 在企业网络中,活动目录是必不可少的,它将网络中各种对象组织起来进行管理,方便了网络对象的查找,增强了网络的安全性,为用户的物流管理提供了极大的便利,本章首先介绍了活动目录的基本概念,然后通过 ...
- 使用koa2+es6/7打造高质量Restful API
前言 如今nodejs变得越来越火热,采用nodejs实现前后端分离架构已被多数大公司所采用. 在过去,使用nodejs大家首先想到的是TJ大神写的express.js,而发展到如今,更轻量,性能更好 ...
- linux中iptables配置文件及命令详解
转自:https://www.cnblogs.com/itxiongwei/p/5871075.html iptables配置文件 直接改iptables配置就可以了:vim /etc/sysconf ...