2011-07-12 37 views
-1

我目前正在为类创建项目,以创建一个TextLine类,该类表示必须表示为字符数组的文本行。如何在Java中为char数组创建追加方法

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

我试图在网上搜索我如何做到这一点,甚至是一个显示实现的String或StringBuffer类的示例,但由于我在Google的新手技能,我无法真正找到任何有用的东西。

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

这是我有:

public void append(String fragment){ 

    char[] temp = fragment.toCharArray(); 

} 

我不太清楚,可以用什么阵列的方法,如果有,即使是其中之一。有人可以帮我吗?

+0

是您的最终目标附加条件?你可以用+操作符来做到这一点。使用toCharArray的问题是该字符串可以包含UTF代码点,这些代码点使用多个字节表示。不知道编码,你的字节是没用的。 – jackrabbit

+0

@thinhtvu:为什么你试图删除接受的答案中的代码(通过尝试编辑)?这个行动坦率地说很臭。耻辱你和-1。版主已被标记。 –

+0

所有注意到原始海报也试图删除Toader Mihai Claudiu的答案*中发布的代码,他接受*。 –

回答

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

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

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

这是你char[]数组转换为String,所以你可以使用+操作者只需串连,为fragment。然后,您只需使用toCharArray()将新的String转换回char[]阵列。

1

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

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; 
} 
}