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

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

convert List<String> to a String

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

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

convert List<String> 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<? 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"

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • Java 8自Java 5(发行于2004)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发...
    谁在烽烟彼岸阅读 909评论 0 4
  • 现在是北京时间上午9点,今天她不用上班,翘首坐在白木椅上。从落地窗中透出来的阳光恰好照着她脸上的几颗青春痘...
    猪鼻子白小九阅读 307评论 0 0
  • 和朋友约饭,店里有个小惊喜,每个人都会得到一张小字条。我的那句是:别以为世界抛弃了你,其实世界压根儿没空理你。 很...
    玖七七阅读 235评论 2 0