如果你之前有使用过其他的编程语言,那你肯定或多或少听说过 或者用过 Join() 这个方法。 但是如果你在使用Java的话,那么很遗憾你肯定没有用过这个方法,因为Java标准的类库给你提供了如何构建一个GUI 应用,访问数据库,通过网络发送数据,做一些XML转换或者调用一些远程方法. 但是很遗憾, java并没有提供任何可以Join一个字符串合集(collection of strings) 的方法。所以当有有这种需求的时候,你必须要使用第三方类库做如下的工作:
但是现在Java8 新特性开始支持 join string collection 了。
Java8 添加了一个新的类叫做 StringJoiner。 正如这个类名所示,我们能够通过使用它来完成:
是不是很酷呢, 那么下面我们一起来探索一下,如何使用这个 StringJoiner 吧。
//字符串用 ,分割
StringJoiner joiner = new StringJoiner(",");
joiner.add("foo");
joiner.add("bar");
joiner.add("baz");
String joined = joiner.toString(); // "foo,bar,baz"
// add() calls can be chained
joined = new StringJoiner("-")
.add("foo")
.add("bar")
.add("baz")
.toString(); // "foo-bar-baz"
同时在 String这个类中我们可以使用 static join() 方法。
// join(CharSequence delimiter, CharSequence... elements)
String joined = String.join("/", "2014", "10", "28" ); // "2014/10/28"
// join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
List<String> list = Arrays.asList("foo", "bar", "baz");
joined = String.join(";", list); // "foo;bar;baz"
对于新的 Stream Api,我们也可以同时使用 Join Collector。
List<Person> list = Arrays.asList(
new Person("John", "Smith"),
new Person("Anna", "Martinez"),
new Person("Paul", "Watson ")
);
String joinedFirstNames = list.stream()
.map(Person::getFirstName)
.collect(Collectors.joining(", ")); // "John, Anna, Paul"
是不是很棒,那你还会再去用老式的拼接字符串么? 不知道你会不会,我反正不会了。