在JDK 8中连接字符串
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
在JDK 8中连接字符串相关推荐
- jdk8 字符串_在JDK 8中连接字符串
jdk8 字符串 JDK 8引入了语言功能,例如lambda表达式 , 流 ,甚至是新的Date / Time API ,这些都会改变我们编写Java应用程序的方式. 但是,还有一些新的API和功能可 ...
- 在Python中连接字符串的首选方法是什么?
本文翻译自:Which is the preferred way to concatenate a string in Python? Since Python's string can't be c ...
- linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法
这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...
- Web.config中连接字符串的加密和解密
Web.config中连接字符串的加密和解密 我们采用命令行的方式进行加密和解密.使用ASP.NET2.0提供的命令行工具aspnet_regiis.exe,该应用程序位系统目录下Microsoft ...
- java字符连接字符串数组_Java中连接字符串的最佳方法
java字符连接字符串数组 最近有人问我这个问题–在Java中使用+运算符连接字符串是否对性能不利? 这让我开始思考Java中连接字符串的不同方法,以及它们如何相互对抗. 这些是我要研究的方法: 使用 ...
- Java中连接字符串的最佳方法
最近有人问我这个问题–在Java中使用+运算符连接字符串是否对性能不利? 这让我开始思考Java中连接字符串的不同方法,以及它们如何相互对抗. 这些是我要研究的方法: 使用+运算符 使用StringB ...
- (译)利用ASP.NET加密和解密Web.config中连接字符串
介绍 这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串 背景描述 在以前的博客中,我写了许多关于介绍 Asp.net, Gridview, SQL Server, A ...
- 如何在PowerShell中连接字符串和变量?
本文翻译自:How do I concatenate strings and variables in PowerShell? Suppose I have the following snippet ...
- 在Excel中连接字符串的方法
在Excel中连接字符串的方法 此段文字节选自<Excel 2007技巧大全>一书 有时在使用Excel过 ...
最新文章
- GitHub 上 25 个 Python 学习资源,墙裂推荐!
- promise async 学习笔记
- 客户端代码压缩成zip和服务器开启gzip
- DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测
- ELK+Kafka 企业日志收集平台(二)这是原版
- 数据结构实验二:迷宫的求解
- 【计算机视觉】期刊整理
- python2020未来前景_2020年Python发展前景如何呢?
- iPhoneXI/XI MAX机模曝光:浴霸式摄像头着实抢眼
- [笔记] 如何从不同扩展名的数字证书中提取明文信息? *.pem *.der *.crt *.cer *.key之间的区别是什么?...
- 三段式状态机的原理/代码/仿真,1001序列检测实例Verilog
- 修改植物大战僵尸游戏存档
- Mac电脑升级13系统后,git clone 代码报错,mac升级后git ssh用不了
- PHP in_array 函数,解决大量数据判断in_array的效率慢,in_array 效率优化
- RK VOP设备树分析
- 双指针算法及模板应用
- SecureCRT如何设置窗口下黑底白字
- ###数字不同数之和###python123
- L2TP客户端之Strongswan移植(二)
- 如果我的猫也会写字——猫的日记猜想
热门文章
- 19年8月 字母哥 番外篇:周边技术生态
- 学生用计算机说明方法,15.文中多处运用了作比较的说明方法.请任选一例.说说运用这种方法的作用. 例子: 作用:...
- java虚拟机的内存模型_JVM(Java虚拟机)内存模型(转载/整理)
- hibernate查询缓存_在Hibernate中启用实体和查询缓存
- netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类
- 探索cqrs和事件源_编写基于事件的CQRS读取模型
- cobertura_Cobertura和Sonar 5.1的问题
- java 编程工具_Java开发工具可以促进编程!
- Java:如何创建轻量级数据库微服务
- jvm分配内存_为JVM分配内存:一个案例研究