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
附录: