在日常編程中,常常需要將一個集合中的元素以某種指定的方式拼接成一個新的字符串,這個操作可能看起來很簡單,但仍需要注意一些細節,下面從多個方面進行詳細闡述。
一、使用for循環拼接字符串
在使用for循環拼接字符串時,常見的錯誤是在循環末尾每次新增一個字符串,這樣會創建一個新的字符串對象,導致該算法的時間複雜度為 O(n^2)。
// 錯誤示例:
String s = "";
List<String> list = Arrays.asList("A","B","C");
for (String str : list) {
s += str + ", ";
}
s = s.substring(0, s.length()-2); // 去掉末尾多餘的", "
// 正確示例:
StringBuilder sb = new StringBuilder();
List<String> list = Arrays.asList("A","B","C");
for (String str : list) {
sb.append(str).append(", ");
}
String s = sb.toString().substring(0, sb.length()-2);
在以上示例中,我們將字符串拼接時改用了 StringBuilder,這樣可以極大地提高字符串拼接的效率。
二、使用Java8的Stream API拼接字符串
Stream API 是 Java8 中新增的一種函數式編程方法,它可以方便地對集合進行操作。在 Stream API 中,我們可以使用 Collectors.joining() 方法來拼接字符串。
List<String> list = Arrays.asList("A","B","C");
String s = list.stream().collect(Collectors.joining(", "));
在以上示例中,collect() 方法可以收集 Stream 流中的元素,並將它們拼接為一個字符串。這種方法十分簡潔,也很高效。
三、使用StringUtils類拼接字符串
StringUtils 是 Apache Commons Lang 庫中的一個工具類,它提供了很多字符串處理的方法,包括字符串拼接。
List<String> list = Arrays.asList("A","B","C");
String s = StringUtils.join(list, ", ");
在以上示例中,我們利用了 StringUtils 的 join() 方法來拼接字符串,這樣可以減少一些重複的代碼。
四、使用StringJoiner拼接字符串
Java8 中新增了一個 StringJoiner 類,它可以方便地拼接字符串。
List<String> list = Arrays.asList("A","B","C");
StringJoiner sj = new StringJoiner(", ");
for (String str : list) {
sj.add(str);
}
String s = sj.toString();
在以上示例中,我們首先創建了一個 StringJoiner 對象,並且指定了拼接的分隔符。然後使用 add() 方法向 StringJoiner 中添加元素。當所有元素添加完畢之後,我們調用 toString() 方法即可獲得拼接後的新字符串。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/235931.html