jdk8 字符串

JDK 8引入了语言功能,例如lambda表达式 , 流 ,甚至是新的Date / Time API ,这些都会改变我们编写Java应用程序的方式。 但是,还有一些新的API和功能可能不太“改变游戏规则”,但仍为Java编程语言带来了更大的便利性和表现力。 在本文中,我将介绍这些较小的功能之一,并研究在JDK 8中轻松连接多个String的能力。

在JDK 8中连接多个String的最简单方法也许是通过遍历Java类String的两个新的静态方法: join(CharSequence,CharSequence…)和join(CharSequence,Iterable) 。 接下来的两个代码清单演示了应用这两个String.join方法有多么容易。

使用String.join(CharSequence,CharSequence ...)

/*** Words associated with the blog at http://marxsoftware.blogspot.com/ in array.*/
private final static String[] blogWords = {"Inspired", "by", "Actual", "Events"};/*** Demonstrate joining multiple Strings using static String* "join" method that accepts a "delimiter" and a variable* number of Strings (or an array of Strings).*/
private static void demonstrateStringJoiningArray()
{final String blogTitle = String.join(" ", blogWords);out.println("Blog Title: " + blogTitle);final String postTitle = String.join(" ", "Joining", "Strings", "in", "JDK", "8");out.println("Post Title: " + postTitle);
}

使用String.join(CharSequence,Iterable)

/*** Pieces of a Media Access Control (MAC) address.*/
private final static List<String> macPieces;static
{macPieces = new ArrayList<>();macPieces.add("01");macPieces.add("23");macPieces.add("45");macPieces.add("67");macPieces.add("89");macPieces.add("ab");
};/*** Demonstrate joining multiple Strings using static String* "join" method that accepts a "delimiter" and an Iterable* on Strings.*/
private static void demonstrateStringJoiningIterable()
{final String macAddress = String.join(":", macPieces);out.println("MAC Address: " + macAddress);
}

运行上面两个代码清单的输出是:

Blog Title: Inspired by Actual Events
Post Title: Joining Strings in JDK 8
MAC Address: 01:23:45:67:89:ab

使用两个静态String.join方法是组合字符串的简便方法,但是JDK 8引入的StringJoiner类提供了更大的功能和灵活性。 下一个代码清单演示了如何实例化StringJoiner并将其传递给指定的定界符(小数点),前缀(打开括号)和后缀(关闭括号)。

简单的字符串连接器使用

/*** Demonstrate joining multiple Strings using StringJoiner* with specified prefix, suffix, and delimiter.*/
private static void demonstrateBasicStringJoiner()
{// StringJoiner instance with decimal point for delimiter, opening// parenthesis for prefix, and closing parenthesis for suffix.final StringJoiner joiner = new StringJoiner(".", "(", ")");joiner.add("216");joiner.add("58");joiner.add("216");joiner.add("206");final String ipAddress = joiner.toString();out.println("IP Address: " + ipAddress);
}

运行上面的代码将以下字符串打印到标准输出:“ IP地址:(216.58.216.206)”

StringJoiner是一种特别有吸引力的方法,在这种情况下,正在使用StringBuilder将定界字符添加到要作为某种迭代类型的一部分而构建的String中。 在这种情况下,通常有必要在最后一次迭代中删除添加到该构建器末尾的额外字符。 StringJoiner足够“聪明”,只在要连接的字符串之间添加定界符,而不是在最后一个字符串后添加定界符。 连续调用add(CharSequence)方法看起来与StringBuilder / StringBuffer API非常相似。

我将在本文中介绍的最后一个JDK 8引入的用于连接String的方法是将流支持的集合与连接 收集器一起使用 ( 归约操作 )。 在下一个代码清单中对此进行了演示,其输出与用于通过String.join打印MAC地址的String.join方法相同,该方法接受Iterable作为其第二个参数。

字符串与收藏集的流连接

/*** Demonstrate joining Strings in a collection via that collection's* Stream and use of the Joining Collector.*/
private static void demonstrateStringJoiningWithCollectionStream()
{final String macAddress =macPieces.stream().map(piece -> piece.toString()).collect(Collectors.joining(":"));out.println("MAC Address: " + macAddress);
}

如果开发人员希望能够为连接的字符串提供前缀和后缀,而不必连续调用add使用StringJoiner连接String所需的方法,则Collectors.joining(CharSequence,CharSequence,CharSequence)方法是完美的选择。 下一个代码示例显示了上面的IP地址示例,用于演示StringJoiner ,但这一次是使用集合,流和StringJoiner收集器实现的。 输出与前面的示例相同,无需为每个要连接的String指定add(CharSequence)

字符串与Collection的流,前缀和后缀联接

/*** Demonstrate joining Strings in a collection via that collection's* Stream and use of a Joining Collector that with specified prefix * and suffix.*/
private static void demonstrateStringJoiningWithPrefixSuffixCollectionStream()
{final List<String> stringsToJoin = Arrays.asList("216", "58", "216", "206");final String ipAddress =stringsToJoin.stream().map(piece -> piece.toString()).collect(Collectors.joining(".", "(", ")"));out.println("IP Address: " + ipAddress);
}

这篇博客文章介绍了JDK 8中提供的三种连接字符串的方法:

  1. 静态String.join方法
  2. StringJoiner实例
  3. 加入收集器的收集流

翻译自: https://www.javacodegeeks.com/2015/02/joining-strings-in-jdk-8.html

jdk8 字符串

jdk8 字符串_在JDK 8中连接字符串相关推荐

  1. 在JDK 8中连接字符串

    JDK 8引入了语言功能,例如lambda表达式 , 流 ,甚至是新的Date / Time API ,这些都会改变我们编写Java应用程序的方式. 但是,还有一些新的API和功能可能不太" ...

  2. 怎么获取mysql的链接字符串_如何从数据库获取连接字符串

    小编典典 获取连接字符串的最简单方法是使用Visual Studio中的"服务器资源管理器"窗口(菜单 视图 , 服务器资源管理器 ),然后从该窗口连接到服务器. 然后,您可以在已 ...

  3. mysql中转换成字符串_如何在R中转换字符串的大小写?

    mysql中转换成字符串 Hello, folks. In this tutorial we are going to convert the case of the string in R. The ...

  4. golang 格式化字符串_如何在Go中格式化字符串

    golang 格式化字符串 As strings are often made up of written text, there are many instances when we may wan ...

  5. php根据字符串分割字符串_如何在PHP中按字符串分割字符串?

    php根据字符串分割字符串 How to split a string by string in PHP? For example, 如何在PHP中按字符串分割 字符串 ? 例如, "a s ...

  6. python中输入字符串_简单讲解Python中的字符串与字符串的输入输出

    简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...

  7. ruby字符串截取字符串_如何在Ruby中附加字符串?

    ruby字符串截取字符串 There are multiple ways to do the required but we will study about three of them. 有多种方法 ...

  8. python 文件中搜索字符串_在txt文件中搜索字符串Python

    为什么你总是得到True的原因已经给出,所以我只提出另一个建议: 如果你的文件不是太大,你可以读它到一个字符串,只是使用(更容易,通常比每行阅读和检查行更快): if 'blabla' in open ...

  9. 在Python中连接字符串的首选方法是什么?

    本文翻译自:Which is the preferred way to concatenate a string in Python? Since Python's string can't be c ...

最新文章

  1. 计蒜客 神奇的二叉树 ( 已知先序和中序遍历构建二叉树 )
  2. 微信公众号接口添加菜单时错误(errcode:40017 invalid button type)
  3. 如何减小与“大牛”的差距
  4. python字符串添加成员_Python - 字符串的操作方法
  5. d3h 技嘉b365m 黑苹果_黑苹果硬件选购指南主板amp;硬盘amp;WI
  6. 10个线程同时执行i++操作1000次,如何保证结果是1w
  7. vos3000下载java_昆石VOS3000_2.1.4.0完整安装包及安装脚本
  8. 一篇文章掌握整个JVM,JVM超详细解析。【持续更新 康师傅yyds】
  9. 利用QQ游戏破解QQ密码
  10. beeline 查询表数据导出到本地文件csv
  11. 目标检测入门知识以思考(写于2021.11)
  12. C++程序正向编译逆向反编译(一)
  13. 随机论---生命起源随想
  14. electron实现远程更新
  15. 微信小程序:全新独家云开发微群人脉
  16. cocos2dx+java部落战争全套游戏源码资源策划文档
  17. SC8701同步升降压控制芯片
  18. 5.18 选择图层的几种方式 [原创Ps教程]
  19. 计算机房维修保养记录表,机房设备、系统运行及维护记录表
  20. python使用opencv将tif裁剪为任意形状

热门文章

  1. P3309-[SDOI2014]向量集【线段树,凸壳】
  2. CF757F-Team Rocket Rises Again【最短路,DAG支配树】
  3. 欢乐纪中A组周六赛【2019.5.18】
  4. atcoder E - Greedy Ant(最优解等价+dp)
  5. 【模板】EK求最大流、dinic求最大流
  6. 【DP】数的划分(ybtoj DP-1-3)
  7. artTemplate的空白输出坑
  8. 两张趣图助你理解 HTTP 状态码
  9. 这些代码优化的方法,你都用过吗
  10. Java NIO系列教程(十一) Pipe