Guava常用工具库整理

简介: Guava常用工具库整理

Guava常用工具库整理

本文主要包括以下几方面:

1. Joiner 连接串的使用
2. Splitter 分隔符的使用
3. 简化写法
4. Guava Cache 缓存

使用guava之前,先引入依赖

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>20.0</version>
</dependency>

一、Joiner 连接串的使用

在jdk中,可以使用String类下的join方法,但有个弊端,要求集合中的元素都是String类型。

List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
String join = String.join(",", list);
System.out.println(join);//1,2

2、使用第三方的org.apache.commons.lang3.StringUtils工具包也有个join方法

Integer[] arr = new Integer[]{3,4,5,6};
System.out.println(StringUtils.join(arr, "#"));//3#4#5#6

guava提供的 Joiner 类,可以很好的解决这一问题

List<String> list2 = Arrays.asList("Google", "Guava", 
"Java", "Scala", "Kafka");
String result = Joiner.on("; ").join(list2);
System.out.println(result);//Google; Guava; Java; Scala; Kafka
------------------------------------------------------------------------
List<Integer> list3 = Arrays.asList(1,5,7);
String result3 = Joiner.on(",").join(list3);
System.out.println(result3);//1,5,7
//将Map转成String
Map<String,Object> map = new HashMap<>();
map.put("name","jack");
map.put("age",12);
String result4 = Joiner.on(",").withKeyValueSeparator("=").join(map);
System.out.println(result4);//name=jack,age=12

二、Splitter 分隔符的使用

//传统写法
String temp = "Hello|Java";
List<String> list = Arrays.asList(temp.split("\\|"));//注意需要转义
System.out.println(list);
//guava的写法
List<String> list = Splitter.on("|").splitToList("Hello|Java");
System.out.println(list);//[Hello, Java]
//根据分隔符, 分割几次字符串.
List<String> list = Splitter.on("#").limit(3).splitToList("Java#C++#C#Shell");
System.out.println(list);//[Java, C++, C#Shell]
//将url中的键值对存储到map里面
Map<String, String> map = Splitter.on("&").withKeyValueSeparator('=').split("id=123&name=green");
System.out.println(map);//{id=123, name=green}

三、简化写法

快速简单的创建List、Map集合,不需要两边都加上泛型,使代码更加的简洁

使用java原生创建HashMap是这样的

Map<String, Object>  hashMap  = new HashMap<String, Object>();

使用guava创建一个HashMap时,可以这样。

Map<String, Object> hashMap  = Maps.newHashMap();

使用java原生创建ArrayList是这样的

List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

使用guava创建一个ArrayList时,可以这样。

List<Map<String,Object>> list = Lists.newArrayList();

初始化Map,这种方式的弊端是map被初始化后不能在进行put操作

Map<String, String> map = ImmutableMap.of("name", "jack","age", "23");

或者

Map<String, String> map= ImmutableMap.<String, String>builder()
    .put("name", "jack")
    .put("age", "23")
    .build();
  System.out.println(map);//{name=jack, age=23}

初始化List

List<String> names = newArrayList("alpha", "beta", "gamma");

或者

List<String> names = Lists.newArrayList("alpha", "beta", "gamma");
System.out.println(names);//[alpha, beta, gamma]

四、Guava Cache 缓存

主要面向本地缓存,轻量级的Cache,适合缓存少量数据,不需要配置文件,使用起来和ConcurrentHashMap一样简单,而且能覆盖绝大多数使用cache的场景需求!

下面先定义一个存储缓存的容器,也就是Cache接口的实现类,接口类型为泛型,可以很好的支持不同类型的key和value

public class CacheManager {
    private static Cache<String,Object> dataMap = CacheBuilder.newBuilder()
            //设置cache的初始大小为10,要合理设置该值
            .initialCapacity(100)
            .maximumSize(1000)
            //设置并发数为5,即同一时间最多只能有5个线程往cache执行写入操作
            .concurrencyLevel(5)
            //设置cache中的数据在写入之后的存活时间
            .expireAfterWrite(3, TimeUnit.SECONDS)
            .build();
    public static void put(String key,Object value){
        dataMap.put(key,value);
    }
    //如果key不存在,返回null
    public static Object get(String key){
        return dataMap.getIfPresent(key);
    }
    //移除key
    public static void remove(String key){
        dataMap.invalidate(key);
    }
    public static void main(String[] args) throws InterruptedException {
        CacheManager.put("name","jack");
        System.out.println(CacheManager.get("name"));//jack
        CacheManager.remove("name");
        System.out.println(CacheManager.get("name"));//null
    }
}


相关文章
|
XML 数据格式 Windows
WIX 安装部署教程(六) 为你收集的七个知识点
原文:WIX 安装部署教程(六) 为你收集的七个知识点  前段时间整理5篇WIX(Windows Installer XML)的安装教程,但还不够完善,这里继续整理了七个知识点分享给大家。WIX最新版本3.
1697 0
|
29天前
|
存储 安全 Java
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(不可变集合篇)
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(不可变集合篇)
30 1
|
29天前
|
Java API Apache
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(基础编程篇)
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(基础编程篇)
43 0
|
2月前
|
存储 缓存 安全
Guava:Java开发者的全方位工具库
Guava:Java开发者的全方位工具库
71 0
|
缓存 安全 JavaScript
别再造轮子了,Google 开源的 Guava 工具库真心强大!
别再造轮子了,Google 开源的 Guava 工具库真心强大!
|
运维 Kubernetes Go
|
Java Unix Linux
Elasticsearch 源码学习(1)源码编译调试
Elasticsearch 源码学习(1)源码编译调试
620 0
Elasticsearch 源码学习(1)源码编译调试
|
XML 缓存 运维
JDK 工具一览
Java 坑如此大,需要慢慢填。 本文是列出JDK自带的一些工具,介于篇幅,简单列出工具列表及工具的作用。至少先做到知道有哪些工具,然后才能在实际中用到。
785 0
|
前端开发 Java 程序员
Maven入门,读这篇文章就够了(1)
Maven入门,读这篇文章就够了
91 0
Maven入门,读这篇文章就够了(1)
|
Java 程序员 Maven
Maven入门,读这篇文章就够了(2)
Maven入门,读这篇文章就够了
90 0