guava Joiner

Joiner用来完成字符串的拼接

简单实例

使用guava创建一个包含a,b,c 3个元素的 ArrayList

        List<String> lists = Lists.newArrayList("a", "b", "c"); 

如果要List中的元素用一个分隔符(“|”)连接起来。常用做法如下:

        StringBuilder ret = new StringBuilder();
        for(String ele:lists){
            ret.append(ele).append("|");
        }
        ret.setLength(ret.length()-1);//去掉最后一个分隔符"|"

使用guava的话是这样的:

        Joiner.on("|").join(lists);//结果是:a|b|c

可以看出来比以前简洁了很多

对于null的处理

如果上面的list中有null元素,使用Joiner.on("|").join(lists)就或抛出NPE(NullPointerException)异常,这时候可以用skipNullsuseForNull方法。

  • skipNulls:忽略null
  • userForNull:替换null
        List<String> lists = Lists.newArrayList("a", "b", "c",null);
        Joiner joiner = Joiner.on("|");
        //joiner.join(lists);                 抛出异常
        joiner.skipNulls().join(lists);      //忽略null,结果是: a|b|c
        joiner.useForNull("*").join(lists);  //替换null,结果是: a|b|c|*

Joiner不可变性

Joiner实例都是不可变的,所以Joiner实例都是线程安全的,因此我们可以把Joiner实例声明为static final的。每个Joiner的操作都会生成一个新的Joiner实例。

比如下面的代码,joiner是一个实例,使用skipNulls方法后又产生一个实例skipNullJoiner,原来的joiner实例不会受影响。

Joiner joiner = Joiner.on("|"); 
Joiner skipNullJoiner=joiner.skipNulls();

Joiner使用对象

joiner不仅可以用来连接IterableIterator、变长参数、数组

这里写图片描述

还可以用作Appendable接口的实例比如(StringBuilder,FileWriter)

        List<String> lists = Lists.newArrayList("a", "b", "c",null);
        Joiner joiner = Joiner.on("|").useForNull("*");
        StringBuilder sb = new StringBuilder();
        joiner.appendTo(sb, lists);
        System.out.println(sb); //输出 a|b|c|*

MapJoiner

Joiner用来连接线性表的,MapJoiner可以用来连接map

        HashMap<String, String> map = Maps.newHashMap();
        map.put("a", "11");
        map.put("b", "22");
        map.put("c", "33");
        Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
        String join = mapJoiner.join(map);//输出 b=22,c=33,a=11

参照:
1、《getting started with google guava》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值