【问题标题】:How to create an append method for a char array in Java如何在 Java 中为 char 数组创建 append 方法
【发布时间】:2011-10-03 20:33:43
【问题描述】:

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

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

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

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

这就是我所拥有的:

public void append(String fragment){

    char[] temp = fragment.toCharArray();

}

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

【问题讨论】:

  • 您的最终目标是附加字符串吗?您可以使用 + 运算符来做到这一点。使用 toCharArray 的问题是字符串可以包含 UTF 代码点,这些代码点使用多个字节表示。在不知道编码的情况下,你的字节就没什么用了。
  • @thinhtvu:您为什么要尝试删除已接受答案中的代码(通过尝试编辑)?坦率地说,这个动作很臭。为你和-1感到羞耻。版主已被标记。
  • 请注意,原始发布者还试图删除 Toader Mihai Claudiu 的回答中发布的代码 他接受了

标签: java arrays string char append


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      通常您会使用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;
         }
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2019-09-29
          • 1970-01-01
          • 2019-11-14
          • 1970-01-01
          • 2012-08-23
          • 2010-10-26
          • 1970-01-01
          • 2015-12-31
          • 1970-01-01
          相关资源
          最近更新 更多