js实现stringbuffer
实现 StringBuffer 的基本思路
在 JavaScript 中实现类似 Java StringBuffer 的功能,可以通过数组存储字符串片段,最后使用 join() 方法合并。这种方式比直接使用字符串拼接更高效,尤其在频繁修改字符串的场景下。

基本实现代码
class StringBuffer {
constructor() {
this.buffer = [];
}
append(str) {
this.buffer.push(str);
return this; // 支持链式调用
}
toString() {
return this.buffer.join('');
}
clear() {
this.buffer = [];
}
get length() {
return this.buffer.reduce((total, str) => total + str.length, 0);
}
}
使用示例
const sb = new StringBuffer();
sb.append('Hello').append(' ').append('World');
console.log(sb.toString()); // 输出 "Hello World"
console.log(sb.length); // 输出 11
sb.clear();
性能优化说明
数组的 push() 和 join() 操作在 JavaScript 引擎中经过高度优化,比直接使用 += 拼接字符串性能更好。特别是在循环中拼接大量字符串时,这种方式的优势更明显。

扩展功能
可以根据需要扩展更多方法,例如插入、删除或替换特定位置的字符串:
insert(index, str) {
this.buffer.splice(index, 0, str);
return this;
}
delete(start, end) {
const str = this.toString();
this.clear();
this.append(str.substring(0, start) + str.substring(end));
return this;
}
替代方案
对于简单的用例,也可以直接使用数组:
const buffer = [];
buffer.push('part1');
buffer.push('part2');
const result = buffer.join('');
这种方法不需要创建专门的类,适合一次性使用的场景。






