最近工作中发现对字符串的操作比较多,之前拼接字符串一直使用StringBuilder,后来发现guava提供了Joiner这样的工具,拼接字符串甚至是list,map,String 三者的相互转换的方法也有.下面就是我做的一个整理,请大神不吝指教.
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.StringJoiner;
/**
* @author yihur
* @description 测试map, list拼接
* @date 2019/4/19
*/
public class TestMapAndList {
private Map<String, String> map;
private List<Object> list;
@Before
public void before_map_new_hashMap() {
//用guava的方法创建HashMap,这样初始化的时候需要制定HashMap的大小,一般大小指定为:(长度/0.75)+1
//这样指定大小,创建的好处了以避免HashMap的频繁的扩容导致性能的损耗
map = Maps.newHashMapWithExpectedSize(6);
map.put("go", "123");
map.put("python", "123");
map.put("java", "123");
map.put("c++", "123");
System.out.println(map.toString());
}
@Before
public void before_list_new_arraylist() {
list = new ArrayList<>();
list.add(null);
list.add("陕西省");
list.add(123456);
list.add(true);
}
@Test
public void string_joiner_java_test() {
//StringJoiner一些情况下可以代替StringBuilder
StringJoiner sj = new StringJoiner("Hollis");
sj.add("go");
sj.add("python");
System.out.println(sj.toString());
//拼接的时候加上前后的标志位
StringJoiner stringJoiner = new StringJoiner(":", "[", "]");
stringJoiner.add("c++").add("go").add("Java").add("python");
System.out.println(stringJoiner.toString());
List<String> list = ImmutableList.of("c++", "go", "Java");
//list拼接字符串,java方法
String collect = String.join(",", list);
System.out.println(collect);
//list拼接字符串,guava方法
String join = Joiner.on(",").join(list);
System.out.println(join);
}
@Test
public void test_list_guava_joiner() {
//忽略Null
String join = Joiner.on(",").skipNulls().join(list);
System.out.println(join);
//用其他值代替null
String join1 = Joiner.on(",").useForNull("未填写").join(list);
System.out.println(join1);
//字符串拼接成list,并忽略空字符串
String str = "java, , python, go";
List<String> stringList = Splitter.on(",").omitEmptyStrings().trimResults().splitToList(str);
System.out.println(stringList);
}
@Test
public void test_map_guava_joiner() {
//拼接map
String join = Joiner.on(",").withKeyValueSeparator("=").join(map);
System.out.println(join);
//分隔字符串生成map
String str = "id=123&name=green&age=10";
Map<String, String> join1 = Splitter.on("&").withKeyValueSeparator("=").split(str);
System.out.println(join1.toString());
}
}
网友评论