1. 数据代码准备
List<String> list1 = Arrays.asList(
"C", "Java", "C++", "Go", "Python", "Scala"
);
List<String> list2 = Arrays.asList(
"C", "Java", "C++", null, "Python", "Scala"
);
HashMap<String, String> map = new HashMap<>();
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v3");
2. Joiner和Java8Stream
2.1 普通方式
String res = Joiner.on("|").join(list1);
System.out.println("res = " + res1);
String resStream = list.stream()
.collect(Collectors.joining("|"));
System.out.println("resStream = " + resStream1);
2.2 跳过null
String res = Joiner.on("|").skipNulls().join(list2);
System.out.println("res = " + res);
String resStream = list2.stream()
.filter(Objects::nonNull)
.collect(Collectors.joining("|"));
System.out.println("resStream = " + resStream);
2.3 使用默认值替换null
String res = Joiner.on("|").useForNull("default").join(list2);
System.out.println("res = " + res);
String resStream = list2.stream()
.map(word -> word != null ? word : "default")
.collect(Collectors.joining("|"));
System.out.println("resStream = " + resStream);
2.4 为Map添加分隔符
String res = Joiner.on("|").withKeyValueSeparator("->").join(map);
System.out.println("res = " + res);
String resStrem = map.entrySet().stream()
.map(entry -> entry.getKey() + "->" + entry.getValue())
.collect(Collectors.joining("|"));
System.out.println("resStrem = " + resStrem);
3. Joiner之append
3.1 join后,追加到StringBuilder中
StringBuilder sb = new StringBuilder("Hello World!");
StringBuilder res = Joiner.on("|").appendTo(sb, list1);
System.out.println("res = " + res);
3.2 join后,输入到File中
try(FileWriter fr = new FileWriter(new File("./test"))) {
Joiner.on("|").appendTo(fr, list1);
} catch (IOException e) {
e.printStackTrace();
}
4. 另附:Scala 示例
/**
* Join测试
*
* @author ALion
* @version 2019/2/2 23:01
*/
object ScalaJoinDemo {
def main(args: Array[String]): Unit = {
val list1 = List("C", "Java", "C++", "Go", "Python", "Scala")
val list2 = List("C", "Java", "C++", null, "Python", "Scala")
val map1 = Map(
"k1" -> "v1",
"k2" -> "v2",
"k3" -> "v3"
)
val res1 = list1.mkString("|")
println(s"res1 = $res1")
val res2 = list2.mkString("|")
println(s"res2 = $res2")
val res3 = list2.filter(_ != null).mkString("|")
println(s"res3 = $res3")
val res4 = list2.map(e => if (e != null) e else "default").mkString("|")
println(s"res4 = $res4")
val res5 = list2.map(Option(_).getOrElse("default")).mkString("|")
println(s"res5 = $res5")
val res6 = map1.map(e => e._1 + "=" + e._2).mkString("|")
println(s"res6 = $res6")
}
}