关于如何用Java构建自己的StringBuilder类的建议?
这是一个家庭作业问题,所以我不是在寻找直接的答案,但我完全不知道从哪里开始这个问题。我的任务是创建自己的StringBuilder类实现,称为MyStringBuilder。我得到了几个创建此类必须使用的方法 我一直在阅读关于StringBuilder类的文章,试图弄明白如何实现它,但我感觉就像一开始一样迷失了方向。以下是我们获得的方法:关于如何用Java构建自己的StringBuilder类的建议?,java,string,Java,String,这是一个家庭作业问题,所以我不是在寻找直接的答案,但我完全不知道从哪里开始这个问题。我的任务是创建自己的StringBuilder类实现,称为MyStringBuilder。我得到了几个创建此类必须使用的方法 我一直在阅读关于StringBuilder类的文章,试图弄明白如何实现它,但我感觉就像一开始一样迷失了方向。以下是我们获得的方法: public class MyStringBuilder { public MyStringBuilder(String s) { }
public class MyStringBuilder {
public MyStringBuilder(String s) {
}
public MyStringBuilder(char[] chars) {
}
public MyStringBuilder append(MyStringBuilder s) {
}
public MyStringBuilder append(int i) {
}
public MyStringBuilder insert(int offset, MyStringBuilder s) {
}
public int length() {
}
public MyStringBuilder reverse() {
}
public MyStringBuilder toLowerCase() {
}
public MyStringBuilder toUpperCase() {
}
public MyStringBuilder substring(int begin, int end) {
}
public MyStringBuilder substring(int begin) {
}
public String toString() {
}
}
编辑1:我还应该提到,我们不允许使用任何已经可用的Java方法。每个方法的所有功能都必须由我来编写,这使得这更加困难 StringBuilder本质上是一个不断增长的字符列表<代码>StringBuilder在JDK中的实现有两个字段:
/**
* The value is used for character storage.
*/
char[] value;
/**
* The count is the number of characters used.
*/
int count;
value
数组的大小始终不小于count
。这里的要点是StringBuilder在其内部数组中保留一些空白空间以提高性能
让我们看看append(charc)
方法的实现:
public AbstractStringBuilder append(char c) {
ensureCapacityInternal(count + 1); // <----
value[count++] = c;
return this;
}
publicAbstractStringBuilderAppend(charc){
ensureCapacityInternal(count+1);//想想StringBuilder
实际上是什么——从概念上讲,它只是一种获取字符串并附加到其他不同字符串上的方法。例如,它可以是一个字符数组(注意,您也可以查看源代码)@DaveNewton谢谢!我试着读了一点源代码,但老实说,我还是不太清楚,这很不幸。我正在努力弄清楚如何开始。好吧,你应该做的第一件事可能是创建一个新的char
-数组来存储StringBuilder
的内容。然后,实现操作该数组的方法。例如,toUpperCase
方法可以迭代数组的所有元素并用它们的大写表示替换它们,length
方法只返回array.length
,等等。。。