首页

使用googled的guava常见ImmutableMap、Multimap、Sets、Optional、Objects及Preconditions检查等用法

标签:guava,google,非空检查,Objects,字符转链接,joiner,字符串分隔符,Splitter,Immutable,不可变的集合,Sets     发布时间:2018-01-19   

一、前言

关于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两种不同方式缓存方式,查看其它文章页