一、前言
关于google的guava-19.0.jar开源包中非空检查Preconditions.checkArgument、Objects.toStringHelper对象转换为字符串toString、字符转链接(Joiner 类)、字符串分隔符Splitter、不可变的集合(Immutable)、一个key对应多个Valve的情况Multimap、集合并集Sets.union、交集Sets.difference、补集Sets.intersection,示例用法如下
二、示例说明
1、非空检查(多条件校验),如下空的时候报出java.lang.NullPointerException
Preconditions.checkNotNull(null);
控制台报错"Exception in thread "main" java.lang.NullPointerException"
String checkValue = null;@b@Preconditions.checkArgument(checkValue!=null && !"".equals(checkValue),"input is null");
控制台报错"Exception in thread "main" java.lang.IllegalArgumentException: input is null"
2、判断Null - 如下如是空字符串则不会打印结果
Optional<String> name = Optional.of("xwood.net");@b@if(name.isPresent()){@b@ System.out.println(name.get());@b@}
3、Object对象toString字符串转换
package test;@b@@b@import com.google.common.base.Objects;@b@@b@public class OBJ{@b@ @b@ private String id;@b@ private String name;@b@ @b@ @Override@b@ public String toString() {@b@ return Objects.toStringHelper(this).add("小木人", this.name).add("111", this.id).toString();@b@ }@b@@b@ public static void main(String[] args) {@b@ System.out.println(new OBJ().toString());@b@ }@b@}
4、字符转链接(Joiner类)
List<String> names = Lists.newArrayList();@b@names.add("小木人");@b@names.add("xwood.net");@b@StringBuilder sb = new StringBuilder();@b@String rs = Joiner.on("@").appendTo(sb, names).toString();@b@System.out.println(rs);
控制台打印结果
小木人@xwood.net
5、字符串分隔符Splitter
String s = "xwood.net,www,小木人";@b@for(String name : Splitter.on(",").trimResults().split(s)){@b@ System.out.println(name);@b@}
控制台结果
xwood.net@b@www@b@小木人
6、不可变的集合(Immutable)
ImmutableMap<Integer, String> map = ImmutableMap.of(111,"xwood",222,"小木人印象");@b@System.out.println(map.toString());
控制台结果
{111=xwood, 222=小木人印象}
7、一个key对应多个Valve的情况(keyValues)
Multimap<Integer, String> keyValues = ArrayListMultimap.create();@b@keyValues.put(1, "a");@b@keyValues.put(1, "b");@b@keyValues.put(2, "c");@b@System.out.println(keyValues.toString());
控制台结果
{1=[a, b], 2=[c]}
8、集合并集union、交集difference、补集intersection的方法
HashSet setA = Sets.newHashSet(1, 2, 3, 4, 5); @b@HashSet setB = Sets.newHashSet(4, 5, 6, 7, 8); @b@ @b@SetView union = Sets.union(setA, setB); @b@System.out.println(union);@b@ @b@SetView difference = Sets.difference(setA, setB); @b@System.out.println(difference); @b@ @b@SetView intersection = Sets.intersection(setA, setB); @b@System.out.println(intersection);
控制台结果
[1, 2, 3, 4, 5, 8, 6, 7]@b@[1, 2, 3]@b@[4, 5]
9、基于callback、LoadingCache两种不同方式缓存方式,查看其它文章页