Guava 已经学习的代码整理

Guava 依赖:

compile group: 'com.google.guava', name: 'guava', version: '18.0'

以下是我自己在开发过程中使用到的谷歌 Guava 的一些例子,有些例子看起来确实没什么用,希望各位朋友们不吝赐教。

参考资料:

1、后悔当初的5年《Google Guava学习》专题

2、蓝学网 Guava 教程

3、

创建不可变集合

ImmutableSet<Integer> numbers = ImmutableSet.of(10,20,30,40,50);
numbers.forEach(System.out::println);

控制台显示:

连接器:集合转成字符串

Set<String> set = new HashSet<>();
set.add("one");
set.add("two");
set.add("three");
set.add("five");
set.add(null);
set.add("six"); // 把集合串成一个字符串,使用 "***" 连接,对于 null 的元素,使用 "no value" 来替代
String str = Joiner.on("***").useForNull("no value").join(set);
System.out.println(str);

控制台显示:

// 设置连接的方式和过滤的格式
Joiner joiner = Joiner.on(",").useForNull("这里是一个空格");
String result = joiner.join("hello",null,"world",null,"你好");
System.out.println(result);

控制台显示:

// 设置连接的方式和过滤的格式
Joiner joiner = Joiner.on("-").skipNulls();
String result = joiner.join("hello",null,"world",null,"你好");
System.out.println(result);

控制台显示:

拆分器:字符串分割

String str = " foo , , bar , queue , ";
// omit 省略空格
List<String> list = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(str);
list.forEach(System.out::println);

控制台显示:

Iterable<String> split = Splitter.on("|").split("android|java|ios| |hello");
Iterator<String> iterator = split.iterator();
StringBuilder sb = new StringBuilder();
while (iterator.hasNext()){
sb.append(iterator.next());
}
System.out.println(sb.toString());

控制台显示:



可以看到,没有跳过空格。

String str = "liwei:zhouguang:huzhenyu:wudi";
int size = Splitter.on(":").splitToList(str).size();
System.out.println(size);

控制台显示:

String str = "liwei:zhouguang:huzhenyu:wudi";
List<String> list = Splitter.on(":").splitToList(str);
list.forEach(System.out::println);

控制台显示:

创建不可变的 Map

ImmutableMap<String,String> map = ImmutableMap.<String,String>builder().
put("name","liwei").
put("age","24").
put("password","123456").
build();
for(Map.Entry<String,String> entry:map.entrySet()){
System.out.println(entry.getKey() + " - " + entry.getValue());
}

控制台显示:

计时(该功能比较常用)

// Stopwatch 旧的用法 Stopwatch stopwatch = new Stopwatch().start(); 已经被弃用
Stopwatch stopwatch = Stopwatch.createStarted();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS);
System.out.println(elapsed);

时间单位有:

1、毫秒 TimeUnit.MILLISECONDS 1秒=10^3毫秒

2、微秒 TimeUnit.MICROSECONDS 1秒=10^6微秒

3、纳秒 TimeUnit.NANOSECONDS 1秒=10^9纳秒

下面的单元测试类比较了 Stopwatch.createUnstarted();Stopwatch.createStarted(); 的不同。

public class StopWatchDemo {

    @Test
public void test01() {
Stopwatch stopwatch = Stopwatch.createUnstarted();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 表示开始计时
stopwatch.start(); try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} stopwatch.stop(); long spend = stopwatch.elapsed(TimeUnit.MILLISECONDS);
System.out.println("消耗了 => " + spend + " 毫秒");
} @Test
public void test02() {
Stopwatch stopwatch = Stopwatch.createStarted();
// 如果不写 start() 就从 Stopwatch.createStarted(); 开始
// stopwatch.start(); try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
} stopwatch.stop(); long spend = stopwatch.elapsed(TimeUnit.MILLISECONDS);
System.out.println("消耗了 => " + spend + "毫秒");
}
}

Objects 类的使用

public class Book {

    private Integer id;
private String name;
private Date publishDate; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Date getPublishDate() {
return publishDate;
} public void setPublishDate(Date publishDate) {
this.publishDate = publishDate;
} public Book() {
} public Book(Integer id, String name, Date publishDate) {
this.id = id;
this.name = name;
this.publishDate = publishDate;
} @Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", publishDate=" + publishDate +
'}';
}
}
Book book = new Book();
book.setId(1);
book.setName("《Spring In Action》");
book.setPublishDate(new Date()); String s = Objects.toString(book);
System.out.println(s);
String s1 = MoreObjects.toStringHelper(book)
.add("x", 1)
.add("name", book.getName())
.add("date",book.getPublishDate())
.toString();
System.out.println(s1);

控制台显示:

下面再给一个例子:

public class ToStringTest {

    private Long userId;
private String name;
private String nickName;
private Gender gender; @Override
public String toString() {
return MoreObjects.toStringHelper(this).add("name", "liwei")
.add("aaa", "bbb")
.add("userId", "1001").add("nickname", "李威威")
.add("gender", Gender.MAN).omitNullValues().toString();
} public static void main(String[] args) {
System.out.println(new ToStringTest());
}
}

控制台显示:

boolean equals1 = Objects.equals("a", "a");
System.out.println(equals1); // true boolean equals2 = Objects.equals(null, "a");
System.out.println(equals2); // false

Guava 已经学习的代码整理的更多相关文章

  1. bootstrap 新手学习笔记 代码整理

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. canvas学习之API整理笔记(二)

    前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...

  3. 【资源】C++学习资料 - 逆天整理 - 精华无密版【最新】

    再失效就太无语了,链接都是多份的~~—————————————————基础——————————————C++环境搭建(全套)http://pan.baidu.com/s/1o6y0smY链接:http ...

  4. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  5. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  6. NodeJS-001-Nodejs学习文档整理(转-出自http://www.cnblogs.com/xucheng)

    Nodejs学习文档整理 http://www.cnblogs.com/xucheng/p/3988835.html 1.nodejs是什么: nodejs是一个是javascript能在后台运行的平 ...

  7. 一份关于Swift语言学习资源的整理文件

    一份关于Swift语言学习资源的整理文件     周银辉 在这里下载 https://github.com/ipader/SwiftGuide

  8. Smtp邮件发送系统公用代码整理—总结

    1.前言 a.在软件开发中,我们经常能够遇到给用户或者客户推送邮件,推送邮件也分为很多方式,比如:推送一句话,推送一个网页等等.那么在系统开发中我们一般在什么情况下会使用邮件发送呢?下面我简单总结了一 ...

  9. 学习ReactNative笔记整理一___JavaScript基础

    学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...

随机推荐

  1. [Web 前端] 022 js 的基本数据类型及使用

    1. Javascript 基本数据类型 1.1 分类 类型 释义 boolean 布尔类型,分 true 与 false number 整型,浮点型 string 字符类型 object 对象类型 ...

  2. kubernetes(k8s)容器编排工具基础概念

    Kubernetes (K8s): 中文社区:https://www.kubernetes.org.cn/replication-controller-kubernetes 官网:https://ku ...

  3. Python实现批量执行华为交换机脚本

    #!/usr/bin/python3 # -*- coding:utf-8 -*- import paramiko import time ssh = paramiko.SSHClient() key ...

  4. Dp test solution

    Dp test solution 按照难易程度排序题解: Problem B Problem Description Tarzan 现在想要知道,区间 [L,R] 内有多少数是优美的.我们定义一个数是 ...

  5. git命令?

    #文件及文件夹创建删除    mkdir  文件名称    (创建文件夹)    touch  文件名称    (创建文件)    rm -r  文件名称     (递归删除)    rm -rf 文 ...

  6. P2510 [HAOI2008]下落的圆盘

    传送门 首先考虑两个圆覆盖的情况,我们可以求出圆心与交点连线 $A$ 的极角 具体就是求出两圆心连线 $B$ 极角加上余弦定理加反余弦求出 $A,B$ 之间夹角 ,然后覆盖了多少就可以得出 但是多个圆 ...

  7. 前端开发HTML&css入门——伪类选择器和一些特殊的选择器

    伪类和伪元素 有时候,你需要选择本身没有标签,但是仍然易于识别的网页部位,比如段落首行或鼠标滑过的连接.CSS为他们提供一些选择器:伪类和伪元素. 常用的一些伪类选择器: :link :visited ...

  8. IOS绘图详解(http://blog.163.com/wkyuyang_001/blog/static/10802122820133190545227/)

    14.1 Quartz概述 Quartz是Mac OS X的Darwin核心之上的绘图层,有时候也认为是CoreGraphics.共有两种部分组成Quartz: Quartz Compositor,合 ...

  9. 使用vim打造python-ide

    一.前言 一直希望在linux下进行python开发,但是linux不想启动图形化界面,所以干脆直接用上了万能的VIM,用VIM打造了属于自己的python-IDE 二.插件 标签导航(tagbar和 ...

  10. mongodb 在 linux 中的安装和简单使用

    一.环境介绍 1.mongodb版本: mongodb-linux-x86_64-rhel70-3.2.22  # 点击下载2.linux版本: Ubuntu 18.04.2 LTS 二.安装1.上传 ...