Java StringJoiner
最后修改于 2025 年 5 月 31 日
本文探讨 Java 中的 StringJoiner,这是一个用于高效构建分隔字符串的有用类。
StringJoiner 通过在元素之间插入分隔符来帮助格式化字符序列。 此外,它还允许使用可选的前缀和后缀进行自定义,使其成为结构化文本格式化的理想选择。
关于 StringJoiner 的一个重要细节是,它仅在元素之间插入分隔符,而不在序列末尾插入。 这意味着最后一个元素不会有多余的尾随分隔符,从而确保干净和正确的格式,而无需不必要的字符。
在内部,StringJoiner 被 String.join 方法利用,提供了一种简单有效的方式来连接字符串。
使用 StringJoiner
以下示例使用 StringJoiner 类连接数字。
void main() {
var joined = new StringJoiner(",");
joined.add("1");
joined.add("2");
joined.add("3");
joined.add("4");
joined.add("5");
System.out.println(joined);
}
该示例连接五个数字并将最终字符串打印到控制台。
var joined = new StringJoiner(",");
创建 StringJoiner 类的新实例。 逗号字符用作分隔符。
joined.add("1");
joined.add("2");
joined.add("3");
joined.add("4");
joined.add("5");
使用 add 方法添加五个值。
System.out.println(join);
StringJoiner 被转换为字符串并打印到控制台。
$ java Main.java 1,2,3,4,5
String.join 方法
在第二个示例中,我们使用 String.join 方法连接字符串。
void main() {
var joined = String.join("/", "2024", "7", "1");
System.out.println(joined);
}
String.join 方法在内部使用 StringJoiner。
var joined = String.join("/", "2024", "7", "1");
使用 String.join 方法连接日期。
$ java Main.java 2016/8/5
连接列表
第三个示例连接列表的元素。
void main() {
var words = List.of("Today", "is", "a", "beautiful", "day");
var joined = String.join(" ", words);
System.out.println(joined);
}
可以将列表作为参数传递给 String.join 方法。
var joined = String.join(" ", words);
列表的元素用单个空格字符连接。
$ java Main.java Today is a beautiful day
读取 CSV 文件
以下示例从 CSV 文件中读取数字,然后使用 StringJoiner 连接它们。
13,24,35,16,50
这是 numbers.csv 文件。
void main() throws FileNotFoundException {
var fileName = "data.csv";
StringJoiner joined;
try (var scanner = new Scanner(new File(fileName))) {
scanner.useDelimiter(",");
joined = new StringJoiner("|");
while (scanner.hasNext()) {
joined.add(scanner.next());
}
}
System.out.println(joined);
}
该示例读取包含数字的 CSV 文件,并使用不同的分隔符通过 StringJoiner 连接它们。
try (var scanner = new Scanner(new File(fileName))) {
scanner.useDelimiter(",");
这些值通过 Scanner 类读取。 数字由逗号字符分隔,因此我们使用 useDelimiter 方法设置逗号分隔符。
var joined = new StringJoiner("|");
使用 "|" 分隔符实例化 StringJoiner 类。
while (scanner.hasNext()) {
join.add(scanner.next());
}
我们使用扫描仪检索值,并将它们与连接器连接起来。
写入 CSV 文件
下一个示例将数字写入 CSV 文件。
void main() throws IOException {
var fileName = "data.csv";
var joined = new StringJoiner(",");
joined.add("21");
joined.add("43");
joined.add("54");
joined.add("76");
joined.add("98");
var newFile = new File(fileName);
boolean created = newFile.createNewFile();
if (created) {
try (var pw = new PrintWriter(newFile)) {
pw.write(joined.toString());
}
}
}
该示例使用 StringJoiner 连接五个数字,并将连接的字符串写入 CSV 文件。
var joined = new StringJoiner(",");
joined.add("21");
joined.add("43");
joined.add("54");
joined.add("76");
joined.add("98");
使用 StringJoiner 连接五个数字。 数字用逗号字符分隔。
var newFile = new File(fileName); boolean created = newFile.createNewFile();
在当前工作目录中创建一个新的文件对象。
if (created) {
try (var pw = new PrintWriter(newFile)) {
pw.write(joined.toString());
}
}
连接的值被写入文件。
Collectors.joining 方法
Collectors.joining 方法返回一个 Collector,该 Collector 连接输入元素,并按遇到的顺序使用指定的分隔符分隔它们。
void main() {
Stream<String> stream = Stream.of("Jan", "Peter", "Robert");
String names = stream.collect(Collectors.joining(" "));
System.out.println(names);
}
该示例使用 stream API 连接三个名称。
$ java Main.java Jan Peter Robert
来源
在本文中,我们介绍了 StringJoiner 和 Collectors.joining。
作者
列出所有Java教程。