Google Guava学习(10)-Guava字符串工具Joiner

1. 功能:字符串操作,如对象转换或字符串拼接

2. 代码:

package com.example.guava.String;

import com.google.common.base.Joiner;
import org.apache.commons.lang3.StringUtils;

import java.util.*;

/**
 * @Description:
 * 1.Guava提供了一个Joiner对象用来连接字符串(通常是将集合或数组转为字符串的操作);
 * 2.usage:Joiner.on(delimiter).skipNulls().join(stringList);
 */
public class JoinerTest {

    public static void main(String[] args) {
        // 1.当我们不使用工具时,要很费时的使用下面方法做转换
        List<Integer> list = Arrays.asList(1,2,3,4,null,6,7); //这个是定长集合,你也可以定义一个不定长的
        StringBuilder sb = new StringBuilder();
        for (Integer item:list){
            if (item!=null){
                sb.append(item).append(",");
            }
        }
        String resultStr = sb.toString();
        String result1 = resultStr.substring(0,resultStr.length()-1);
        System.out.println("1.  不使用工具做转换:"+result1);

        // 2.此时我们可能想起apache common的StringUtils工具
        String result2 = StringUtils.join(list,",");
        System.out.println("2.  使用Apache工具:"+result2);

        // 3.而在这里,我们推荐使用Guava的Joiner工具
        Joiner joiner1 = Joiner.on(",").skipNulls(); //skipNulls():跳过null
        String result3 = joiner1.join(list);
        System.out.println("3.  使用Joiner工具:"+result3);

        // 4.自定义separator
        Joiner joiner = Joiner.on(",").skipNulls();
        String result41 = StringUtils.join(list,";");
        String result42 = Joiner.on(";").skipNulls().join(list);
        System.out.println("4.1 使用Apache工具自定义separator:"+result41);//输出:1;2;3;4;;6;7
        System.out.println("4.2 使用Guava工具自定义separator:"+result42);//输出:1;2;3;4;6;7

        // 5.替换null
        String result5 = Joiner.on(",").useForNull("replace").join(list);
        System.out.println("5.  使用Guava替换null:"+result5);

        // 6.Map转String
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"jalen");
        map.put(2,"mercy");
        map.put(3,"jermy");
        map.put(4,"abely");
        System.out.println("6.1 原始值:"+map.toString());
        Joiner.MapJoiner joiner6 = Joiner.on(";").withKeyValueSeparator("->");
        String result6 = joiner6.join(map);
        System.out.println("6.2 转换后:"+result6);

        // 7.数组转换
        String[] strTest = new String[]{"a","b","c"};
        String joiner7 = Joiner.on(";").join(strTest);
        System.out.println("7.  替换数组中逗号:"+joiner7);

        // 8.错误尝试
        //Joiner joiner = Joiner.on(',');
        //joiner.skipNulls(); // 注意这里的使用:如果改成joiner = joiner.skipNulls();此时才会生效,反之抛异常
        //String result8 = joiner.join("jalen", null, "abely");
        //System.out.println("8.  此时joiner未生效:"+result8);

    }

}

3. 输出结果:

1.  不使用工具做转换:1,2,3,4,6,7
2.  使用Apache工具:1,2,3,4,,6,7
3.  使用Joiner工具:1,2,3,4,6,7
4.1 使用Apache工具自定义separator:1;2;3;4;;6;7
4.2 使用Guava工具自定义separator:1;2;3;4;6;7
5.  使用Guava替换null:1,2,3,4,replace,6,7
6.1 原始值:{1=jalen, 2=mercy, 3=jermy, 4=abely}
6.2 转换后:1->jalen;2->mercy;3->jermy;4->abely
7.  替换数组中逗号:a;b;c


附录:

参考:http://www.yiibai.com/guava/guava_joiner.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值