Как создать метод добавления для массива char в Java - PullRequest
0 голосов
/ 12 июля 2011

В настоящее время я работаю над проектом для класса, чтобы создать класс TextLine, представляющий строку текста, которая должна быть представлена ​​в виде массива символов.

Для одного из методов ядолжен принять строку в качестве аргумента параметра, а затем добавить эту строку в мой уже созданный массив символов.

Я пытался найти в Интернете, как я могу это сделать, или даже пример класса String или StringBuffer, который демонстрировал реализацию, но из-за моих навыков новичка в Google я не мог ничего найтиполезно.

Я думаю, что сначала мне нужно преобразовать строку в массив, а затем каким-то образом использовать один из методов массива, чтобы добавить каждый символ отдельно в массив символов.

Вот что у меня есть:

public void append(String fragment){

    char[] temp = fragment.toCharArray();

}

Я не совсем уверен, какой метод массива можно использовать, если он вообще есть.Может ли кто-нибудь помочь мне?

Ответы [ 4 ]

2 голосов
/ 12 июля 2011

Обычно вы используете 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 голосов
/ 12 июля 2011

Допустим, ваш исходный массив char[] называется arr.Затем вы можете сделать:

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

Это преобразует ваш массив char[] в String, поэтому вы можете просто объединить его в fragment, используя оператор +.Затем вы просто конвертируете новый String обратно в массив char[], используя toCharArray().

1 голос
/ 12 июля 2011

Вы можете использовать метод System.arraycopy для копирования содержимого одного массива в другой.Я оставлю это как упражнение, чтобы выяснить детали.

0 голосов
/ 12 июля 2011

В качестве альтернативы вы можете попробовать чуть более простой метод:

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