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万个开源项目源码 ...
随机推荐
- 20155312 张竞予 Exp7 网络欺诈防范
Exp7 网络欺诈防范 目录 基础问题回答 (1)通常在什么场景下容易受到DNS spoof攻击 (2)在日常生活工作中如何防范以上两攻击方法 实验总结与体会 实践过程记录 (1)简单应用SET工具建 ...
- 使用双引擎,让kbmmw 的客户端访问更方便
前面我们一直都讲了如何使用kbmmw smarthttpservice 给客户端提供REST 服务.主要都是返回给 浏览器访问的,如果我们使用delphi 开发桌面应用,如何使用这些服务呢?其实一切 ...
- 安装jdk+tomcat
linux安装高版本jdk后不起作用的解决办法 1.安装jdk1.8. 2.修改/etc/profile中的JAVA_HOME为新的jdk路径,并执行source /etc/profile. 3.执 ...
- java中super(),与构造方法链(constructor chaining)
public class Apple extends Fruit { } class Fruit{ public Fruit(String name){ System.out.println(&quo ...
- 转 jquery获取两个标签之间文本
https://blog.csdn.net/u010403387/article/details/44197629?utm_source=blogxgwz8 如以下代码所示,id为tidy的<a ...
- SimpleCursorAdapter使用代码
package com.kale.cursoradapter; import android.app.Activity; import android.database.Cursor; import ...
- 日期类时间类,日期时间类,单例模式,装箱与拆箱,数字类随机数,BigDecimal总结
1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018 年月日时分秒 CST代表北 ...
- [转] An Introduction to Mutual SSL Authentication
1. Introduction Mutual SSL authentication or certificate based mutual authentication refers to two p ...
- 《JavaScript》高级程序设计第21章:Ajax和Comet,jsonp
一.创建XMLHttpRequest对象 二.XHR的用法 五.跨域资源共享 六.其他跨域技术七.安全七.安全 1. 图像Ping 2. JSONP(JSON with padding,填充式JSON ...
- pip 安装模块时出现error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools":
在使用pip安装mysqlclient模块时,出现如下错误: 在网上查找资料后显示可能是由于不兼容导致的,最好去下载.whl文件安装成功. 资源地址:http://www.lfd.uci.edu/~g ...