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. python中的FQA (python 学习篇 1)

    Q:1.  "  if __name__=='__main__'   "  这句是什么意思,可以不加吗? A:   如果单独运行该文件,则该模块的内容会被执行: 若运行的文件引用该 ...

  2. CentOS学习之NTP服务配置详解

    详解centos7下ntp服务配置 一.ntp服务是什么 1.定义 NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议. 2.发展 首次记载在 ...

  3. 2019牛客暑期多校训练营(第七场)-C Governing sand

    题目链接:https://ac.nowcoder.com/acm/contest/887/C 题意:有n种树,给出每种数的高度.移除的花费和数量,求最小花费是多少使得剩下树中最高的树的数量占一半以上. ...

  4. 23.安装php和echarts进行结合展示图表

    数据展示 http://echarts.baidu.com/index.html 是一个图像展示 可以到官方实例中选择各种图 通过下载例子 新建echartdome.php <!DOCTYPE ...

  5. 深入应用C++ 11 C2

    template<typename T> void print(T& t) { cout << "lvalue" << endl; } ...

  6. 简单说说utf-8编码格式

    提到utf-8,脑海里立马出现了Unicode.那什么是utf-8, 什么是Unicode呢?简要说一下. Unicode(Universal Multiple-Octet Coded Charact ...

  7. SQLite数据库_c/s架构的心得

    1.使用是Navicat Premium软件, Microsoft Windows版本. 2.选择SQLite并新建数据库: 3.将建好的SQLite数据库,放到新建的项目的debug文件下中, 并在 ...

  8. sql server 多条数据字段合并及创建临时表 FOR XML PATH

    SELECT 字段=(SELECT b.合并字段+',' FROM 表一 AS b WHERE b.相同条件=a.相同条件 FOR XML PATH('')) FROM 表一 AS a DECLARE ...

  9. C#int类型 转Byte[]

    方法1:使用左移和右移 int转化为byte[]:   public  byte[] intToBytes(int value)         {             byte[] src = ...

  10. how to solve error when start Hyper-V quick create app error

    After checked the requirements on Hyper-v by run "systeminfo.exe" in cmd window, then I en ...