jdk8 字符串_在JDK 8中连接字符串
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中提供的三种连接字符串的方法:
- 静态
String.join
方法 StringJoiner
实例- 加入收集器的收集流
翻译自: https://www.javacodegeeks.com/2015/02/joining-strings-in-jdk-8.html
jdk8 字符串
jdk8 字符串_在JDK 8中连接字符串相关推荐
- 在JDK 8中连接字符串
JDK 8引入了语言功能,例如lambda表达式 , 流 ,甚至是新的Date / Time API ,这些都会改变我们编写Java应用程序的方式. 但是,还有一些新的API和功能可能不太" ...
- 怎么获取mysql的链接字符串_如何从数据库获取连接字符串
小编典典 获取连接字符串的最简单方法是使用Visual Studio中的"服务器资源管理器"窗口(菜单 视图 , 服务器资源管理器 ),然后从该窗口连接到服务器. 然后,您可以在已 ...
- mysql中转换成字符串_如何在R中转换字符串的大小写?
mysql中转换成字符串 Hello, folks. In this tutorial we are going to convert the case of the string in R. The ...
- golang 格式化字符串_如何在Go中格式化字符串
golang 格式化字符串 As strings are often made up of written text, there are many instances when we may wan ...
- php根据字符串分割字符串_如何在PHP中按字符串分割字符串?
php根据字符串分割字符串 How to split a string by string in PHP? For example, 如何在PHP中按字符串分割 字符串 ? 例如, "a s ...
- python中输入字符串_简单讲解Python中的字符串与字符串的输入输出
简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...
- ruby字符串截取字符串_如何在Ruby中附加字符串?
ruby字符串截取字符串 There are multiple ways to do the required but we will study about three of them. 有多种方法 ...
- python 文件中搜索字符串_在txt文件中搜索字符串Python
为什么你总是得到True的原因已经给出,所以我只提出另一个建议: 如果你的文件不是太大,你可以读它到一个字符串,只是使用(更容易,通常比每行阅读和检查行更快): if 'blabla' in open ...
- 在Python中连接字符串的首选方法是什么?
本文翻译自:Which is the preferred way to concatenate a string in Python? Since Python's string can't be c ...
最新文章
- 计蒜客 神奇的二叉树 ( 已知先序和中序遍历构建二叉树 )
- 微信公众号接口添加菜单时错误(errcode:40017 invalid button type)
- 如何减小与“大牛”的差距
- python字符串添加成员_Python - 字符串的操作方法
- d3h 技嘉b365m 黑苹果_黑苹果硬件选购指南主板amp;硬盘amp;WI
- 10个线程同时执行i++操作1000次,如何保证结果是1w
- vos3000下载java_昆石VOS3000_2.1.4.0完整安装包及安装脚本
- 一篇文章掌握整个JVM,JVM超详细解析。【持续更新 康师傅yyds】
- 利用QQ游戏破解QQ密码
- beeline 查询表数据导出到本地文件csv
- 目标检测入门知识以思考(写于2021.11)
- C++程序正向编译逆向反编译(一)
- 随机论---生命起源随想
- electron实现远程更新
- 微信小程序:全新独家云开发微群人脉
- cocos2dx+java部落战争全套游戏源码资源策划文档
- SC8701同步升降压控制芯片
- 5.18 选择图层的几种方式 [原创Ps教程]
- 计算机房维修保养记录表,机房设备、系统运行及维护记录表
- python使用opencv将tif裁剪为任意形状