package guavaTest;

 import com.google.common.base.CharMatcher;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
import com.google.common.primitives.Ints;
import com.google.common.util.concurrent.*;
import org.checkerframework.checker.nullness.compatqual.NullableDecl; import java.util.List;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; /**
* Google guava 的使用
*/
public class GuavaTest { //连接器(对于Joiner,常用的方法是 跳过NULL元素:skipNulls() / 对于NULL元素使用其他替代:useForNull(String))
// private static final Joiner joiner = Joiner.on(",").skipNulls();
private static final Joiner joiner = Joiner.on(",").useForNull("我是空字符串"); //分割器(对于Splitter,常用的方法是:trimResults()/omitEmptyStrings()。注意拆分的方式,有字符串,还有正则,还有固定长度分割(太贴心了!))
private static final Splitter splitter = Splitter.on(",").trimResults().omitEmptyStrings(); public static void main(String[] args) { String join = joiner.join(Lists.newArrayList("a", null, "b"));
System.out.println("join:" + join); // a, ,b,,
for (String tmp : splitter.split("bb,lll,kkk,,,,,,,,")) {
System.out.println("|" + tmp + "|");
} List<Integer> integers = Ints.asList(1, 2, 3, 4, 5, 6); System.out.println(Ints.join(",", 1, 2, 3, 4)); //原生数组类型快速合并
int[] concat = Ints.concat(new int[]{1, 2, 3}, new int[]{7, 8, 9});
System.out.println(concat.length); //求最大、最小
System.out.println(Ints.max(concat) + "" + Ints.min(concat)); //是否包含,不用循环查找了
System.out.println(Ints.contains(concat, 9)); //集合到数组的转换
System.out.println(Ints.toArray(integers)); //Map<String,List<String>>
ArrayListMultimap<String, String> listMultimap = ArrayListMultimap.create(); listMultimap.put("张晓明", "数学");
listMultimap.put("张晓明", "语文");
listMultimap.put("张晓明", "物理");
listMultimap.put("王小二", "英语"); test(); } public static void test() { ExecutorService service = Executors.newFixedThreadPool(10);
ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(service);
ListenableFuture<Integer> listenableFuture = listeningExecutorService.submit(() -> { if (new Random().nextInt(3) == 2) {
throw new NullPointerException();
}
return 1; }); FutureCallback<Integer> futureCallback = new FutureCallback<Integer>() { @Override
public void onSuccess(@NullableDecl Integer result) {
System.out.println("---------" + result);
} @Override
public void onFailure(Throwable t) {
System.out.println("------------" + t.getMessage());
} }; Futures.addCallback(listenableFuture, futureCallback); } }

guava的一些用法的更多相关文章

  1. Google Guava的splitter用法

    google的guava库是个很不错的工具库,这次来学习其spliiter的用法,它是一个专门用来 分隔字符串的工具类,其中有四种用法,分别来小结 1 基本用法: String str = " ...

  2. 【java】【guava】Google Guava的splitter用法

    Google Guava的splitter,分割字符串的用法 package com.sxd.swapping.guava; import com.google.common.base.CharMat ...

  3. Guava Cache用法介绍<转>

    Guava Cache是在内存中缓存数据,相比较于数据库或redis存储,访问内存中的数据会更加高效.Guava官网介绍,下面的这几种情况可以考虑使用Guava Cache: 愿意消耗一些内存空间来提 ...

  4. Guava Cache用法介绍

    背景 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用.在日长开发有很多场合,有一些数据量不是很大,不会经常改动,并且访问非常频繁.但是由于受限于硬盘IO的性能或者远程网络 ...

  5. 【Guava】Guava Cache用法

    背景 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用.在日长开发有很多场合,有一些数据量不是很大,不会经常改动,并且访问非常频繁.但是由于受限于硬盘IO的性能或者远程网络 ...

  6. Spring配置cache(concurrentHashMap,guava cache、redis实现)附源码

    在应用程序中,数据一般是存在数据库中(磁盘介质),对于某些被频繁访问的数据,如果每次都访问数据库,不仅涉及到网络io,还受到数据库查询的影响:而目前通常会将频繁使用,并且不经常改变的数据放入缓存中,从 ...

  7. guava eventbus 原理+源码分析

    前言: guava提供的eventbus可以很方便的处理一对多的事件问题, 最近正好使用到了,做个小结,使用的demo网上已经很多了,不再赘述,本文主要是源码分析+使用注意点+新老版本eventbus ...

  8. Guava中Predicate的常见用法

    Guava中Predicate的常见用法 1.  Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...

  9. String split方法与Guava Splitter用法区别

    String split方法与Guava Splitter用法区别 今天同事写了一段使用String split方法的代码,如下所示,同事期望得到的是字符"1",但是没想到却得到空 ...

随机推荐

  1. spy++工具

    vs工具的spy++和第三方spy4win工具下载地址: https://files.cnblogs.com/files/zhangmo/spytools.rar https://files.cnbl ...

  2. libmkl 学习笔记

    libmkl 学习笔记 1.libkml下载地址为: https://github.com/libkml/libkml/releases 这里下载1.3.0版本 2.编译与安装 mkdir build ...

  3. Oracle-DQL 4- 多表查询

    多表查询: 1.笛卡尔积SELECT * FROM dept;--查询员工的信息和其所在部门的信息SELECT ename,job,dname,locFROM emp,dept; --集合A中的所有元 ...

  4. linux:date 计算一组命令所花费的执行时间

    date 命令可以用于计算一组命令所花费的执行时间 可以以不同的格式来读取.设置日期. (1) 读取日期: $ date Thu May 20 23:09:04 IST 2010 (2) 打印纪元时: ...

  5. c++ erase 中的坑

    先看一段正常的代码 #include <iostream> #include <string> using namespace std; int main() { " ...

  6. oracle修改TNSLSNR的端口

    oracle 服务一启动 TNSLSNR.exe 会占用8080端口,这时,如果我们其他程序需要使用8080端口就会比较麻烦,所以需要改一下端口: 用dba账户登录 CMD>sqlplus sy ...

  7. 修改hosts文件 解决coursera可以登录但无法播放视频的问题

    我们经常为了学习或者了解一些领域的知识为访问国外的网站,但是在国内,很多优秀的网站都被封锁了.在GFW(墙)的几种封锁方式中,有一种就是DNS污染,GFW会对域名解析过程进行干扰,使得某些被干扰的域名 ...

  8. python3.3.2中的关键字(转)

    The following identifiers are used as reserved words, or keywords of the language, and cannot be use ...

  9. java面试4

    1.两个对象a和b,请问a==b和a.equals(b)有什么区别? a==b; 比较对象地址 a.equals(b);如果a对象没有重写equals方法,效果和==相同,如果重写了就按照重写的规则比 ...

  10. 1 sql server 中merge的用法

    MERGE 要更新的表名 AS target USING ( 这里是用什么数据源来跟新 ) AS source ( 这里是数据源的所有列名 ) ON 这里是要更新的表和数据源的匹配条件 WHEN MA ...