2015-05-23 2 views
0

Я пишу класс под названием List, который создает экземпляр переменной массив Customers (Customer это просто еще один класс, который принимает String параметры для имени человека),Добавление данных списка в список

т.е. private Customer[] data

I Я пытаюсь написать метод append, который примет Customer и добавит его в другой метод List.

Для этого существует метод, называемый addAll(), но так как я пишу этот код с нуля, я не могу использовать это. Я просмотрел псевдокод, хотя для этого метода можно получить общую идею, и он преобразует объект в массив, а затем использует arraycopy для добавления двух списков.

Я хотел сказать, что это имеет смысл для меня, если я использовал arrays, но я пытаюсь добавить объект Customer из другого списка и добавить их в список в основном методе.

+0

Если вы используете 'arraycopy', вы должны использовать массивы (а не' List'). Пожалуйста, укажите больше контекста. –

+0

Извините, я использую 'List s', я имел в виду, что я понимаю, почему псевдокод использует' arraycopy', но я хочу понять, как это сделать без него, потому что я не использую 'arraycopy' – hello

ответ

0

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

class List { 
    private int size; 
    private Customer[] data; 
    private final static int DEFAULT_CAPACITY = 10; 

    public List() { 
     size = 0; 
     data = new Customer[DEFAULT_CAPACITY]; 
    } 

    public void append(List another) { 
     int anotherSize = another.size; 
     for (int i = anotherSize - 1; i >= 0; --i) { 
      if (size < data.length) { 
       data[size++] = another.data[i]; 
       another.data[i] = null; 
       another.size--; 
      } else { 
       throw new IndexOutOfBoundsException(); 
      } 
     } 
    } 
} 
+0

BTW, Исходный код класса ArrayList является хорошей ссылкой. – Yohn

+0

Спасибо! Хотя я действительно не получаю строки 'another.data [i] = null; another.size -; ', не могли бы вы дать краткое объяснение? – hello

+0

@hello Эти две строки используются для удаления элемента, который был взят и добавлен в базовый список. Если вы не хотите удалять элемент, а также принимать его, вам не нужно это делать. Извините за ошибку в цикле for, и я просто ее исправил. – Yohn

Смежные вопросы