Guava常用工具库整理
Guava常用工具库整理本文主要包括以下几方面:1. Joiner 连接串的使用2. Splitter 分隔符的使用3. 简化写法4. Guava Cache 缓存使用guava之前,先引入依赖<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId
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
}
}
更多推荐










所有评论(0)