繁体   English   中英

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

[英]How to create an append method for a char array in Java

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

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

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

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

这就是我所拥有的:

public void append(String fragment){

    char[] temp = fragment.toCharArray();

}

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

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

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

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

通常您会使用StringBuilder作为 class 的内部存储,但我假设您需要有关如何执行此操作的基本细节。

基本流程是这样的:

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

这是代码(假设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;
   }

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

作为替代方案,您可以尝试一种更直接的方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM