StringJoiner
// 遍历Map并输出(基础版)
for (Map.Entry<String, List<String>> entry : hm.entrySet()) {String key = entry.getKey();List<String> value = entry.getValue();System.out.println(key + "=" + value); // 直接输出列表默认格式
}// 结合StringJoiner拼接(进阶版)
for (Map.Entry<String, List<String>> entry : hm.entrySet()) {String key = entry.getKey();List<String> cities = entry.getValue();StringJoiner sj = new StringJoiner("|", "{", "}"); // 分隔符、前缀、后缀for (String city : cities) {sj.add(city);}System.out.println(key + "=" + sj);
}
=== 基础版:直接输出列表默认格式 ===
广东省=[广州, 深圳, 珠海]
江苏省=[南京, 苏州, 无锡]=== 进阶版:使用StringJoiner自定义格式 ===
广东省={广州|深圳|珠海}
江苏省={南京|苏州|无锡}
StringJoiner
是 Java 8 引入的一个用于拼接字符串的工具类,位于 java.util
包下。它可以更方便地将多个字符串按照指定的分隔符拼接在一起,并且还可以添加前缀和后缀。
基本用法
创建 StringJoiner
对象
可以通过以下两种方式创建 StringJoiner
对象:
只指定分隔符:
StringJoiner joiner = new StringJoiner(",");
指定分隔符、前缀和后缀:
StringJoiner joiner = new StringJoiner(",", "[", "]");
这里的 ","
是分隔符,"["
是前缀,"]"
是后缀。
添加元素
使用 add
方法向 StringJoiner
中添加元素:
joiner.add("Apple").add("Banana").add("Orange");
获取拼接结果
使用 toString
方法获取最终拼接的字符串:
String result = joiner.toString();
示例代码
import java.util.StringJoiner;
public class StringJoinerExample {public static void main(String[] args) {// 创建一个带有分隔符、前缀和后缀的 StringJoinerStringJoiner joiner = new StringJoiner(",", "[", "]");// 添加元素joiner.add("Apple").add("Banana").add("Orange");// 获取拼接结果String result = joiner.toString();System.out.println(result);}
}
输出结果为:
[Apple,Banana,Orange]
常用方法
add(CharSequence newElement)
:添加一个元素到StringJoiner
中。merge(StringJoiner other)
:将另一个StringJoiner
的内容合并到当前StringJoiner
中。setEmptyValue(CharSequence emptyValue)
:设置当StringJoiner
为空时返回的字符串。length()
:返回拼接后字符串的长度。
示例代码(包含常用方法)
import java.util.StringJoiner;
public class StringJoinerMethodsExample {public static void main(String[] args) {StringJoiner joiner1 = new StringJoiner(",");joiner1.add("A").add("B");StringJoiner joiner2 = new StringJoiner("-");joiner2.add("1").add("2");// 合并两个 StringJoinerjoiner1.merge(joiner2);System.out.println(joiner1.toString());// 设置空值StringJoiner emptyJoiner = new StringJoiner(",");emptyJoiner.setEmptyValue("Empty");System.out.println(emptyJoiner.toString());// 获取长度System.out.println(joiner1.length());}
}
输出结果为:
A,B,1-2
Empty
7
与 StringBuilder
的比较
虽然 StringBuilder
也可以用于字符串拼接,但 StringJoiner
在处理带有分隔符的拼接时更加简洁和直观。例如,如果要拼接一个字符串列表,使用 StringJoiner
可以避免手动处理分隔符的位置问题。