如何在Java中为char数组创建append方法

时间:2011-07-12 17:39:09

标签: java arrays string char append

我目前正在为一个类创建一个项目来创建一个TextLine类,该类表示必须表示为字符数组的一行文本。

对于其中一个方法,我应该将一个字符串作为参数的参数,然后将该字符串附加到我已经创建的char数组中。

我试图在网上搜索我是如何做到这一点的,甚至是一个显示实现的String或StringBuffer类的例子,但由于我在谷歌的新手技能,我找不到任何有用的东西。< / p>

我在想的是我首先必须将字符串转换为数组,然后以某种方式使用其中一个数组方法将每个字符分别添加到char数组中。

这就是我所拥有的:

public void append(String fragment){

    char[] temp = fragment.toCharArray();

}

我不太确定可以使用什么数组方法,如果有的话。有人可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

假设您的原始char[]数组名为arr。然后你可以这样做:

public void append(String fragment){
    arr = (new String(arr)+fragment).toCharArray();
}

这会将您的char[]数组转换为String,因此您只需使用fragment运算符将其连接到+即可。然后,您只需使用String将新的char[]转换回toCharArray()数组。

答案 1 :(得分:2)

通常您会使用StringBuilder作为您班级的内部存储空间,但我认为您需要有关如何执行此操作的基本详细信息。

基本过程是这样的:

  • 分配一个新数组,其大小为旧数组+新数据大小
  • 将旧数据复制到新数组
  • 复制新数组末尾的新数据
  • 将此设置为实际数据

以下是代码(假设data成员的声明如下:char[] data = new char[0]

    public void append(String fragment) {
       char[] fragmentChars = fragment.toCharArray();
       char[] newData = new char[data.length + fragmentChars.length];

       System.arraycopy(data, 0, newData, 0, data.length);
       System.arraycopy(fragmentChars, 0, newData, data.length, fragmentChars.length);

       data = newData;
   }

答案 2 :(得分:1)

您可以使用System.arraycopy方法将一个数组的内容复制到另一个数组中。我会把它留作练习来弄清楚细节。

答案 3 :(得分:0)

作为替代方案,您可以尝试稍微简单的方法:

public class Test{
char[] arr;

public static void main(String[] args){
    Test t = new Test();
    t.arr = "hi ".toCharArray();
    t.append(" and bye");
    System.out.print(new String(t.arr));
}

public void append(String myString){
    char[] toAppend = myString.toCharArray();
    char[] newArr = new char[toAppend.length+arr.length];
    for(int i = 0; i < arr.length; i++)
        newArr[i] = arr[i];
    for(int i = 0; i < toAppend.length-1; i++)
        newArr[i+arr.length] = toAppend[i];
    arr = newArr;
}
}