Java8 新特性, 终于可以使用Join Strings了

如果你之前有使用过其他的编程语言,那你肯定或多或少听说过 或者用过 Join() 这个方法。 但是如果你在使用Java的话,那么很遗憾你肯定没有用过这个方法,因为Java标准的类库给你提供了如何构建一个GUI 应用,访问数据库,通过网络发送数据,做一些XML转换或者调用一些远程方法. 但是很遗憾, java并没有提供任何可以Join一个字符串合集(collection of strings) 的方法。所以当有有这种需求的时候,你必须要使用第三方类库做如下的工作:

convert List to a String

但是现在Java8 新特性开始支持 join string collection 了。

Java8 添加了一个新的类叫做 StringJoiner。 正如这个类名所示,我们能够通过使用它来完成:

convert List to a String

是不是很酷呢, 那么下面我们一起来探索一下,如何使用这个 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 elements)
List list = Arrays.asList("foo", "bar", "baz");
joined = String.join(";", list); // "foo;bar;baz"

对于新的 Stream Api,我们也可以同时使用 Join Collector

List 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"

是不是很棒,那你还会再去用老式的拼接字符串么? 不知道你会不会,我反正不会了。

你可能感兴趣的:(Java8 新特性, 终于可以使用Join Strings了)