Как я могу скопировать список <E>в текущий список массивов в java? (Список Generi c) - PullRequest
1 голос
/ 27 мая 2020
  public class ArrayList<E> {
       public static final int DEFAULT_CAPACITY = 10;

       private int size; // number of occupied space
       private E[] data; // ArrayList, encapsulate with the private keyword

       public ArrayList() {
          this(DEFAULT_CAPACITY);
          size = 0;
       }

       @SuppressWarnings("unchecked")
       public ArrayList(int capacity) {
           data = (E[])new Object[capacity];
           size = 0;

           if(capacity < 0) {
               throw new IllegalArgumentException("Capacity should more than 0");
           }
       }

       //Need to be fixed
       //
       //
       //
       public ArrayList(List<E> other) {
           List<E> newList = new ArrayList<E>();


       }
}

Это мой код, и я сделал конструктор с параметром (List other), последним. Я пытаюсь скопировать список в текущий список массивов; данные E [], переменная. Но ошибка в том, что List не может скопировать данные в E []. Итак, я немного запутался. Как их скопировать? если не могу Как мне скопировать Список?

1 Ответ

2 голосов
/ 27 мая 2020

Это должно сработать.

   @SuppressWarnings("unchecked")
   public ArrayList(List<E> other) {
       data = (E[]) other.toArray();
       size = data.length;
   }

Мы используем метод toArray(), реализованный всеми типами List.

В качестве альтернативы выделите массив и скопируйте элементы с помощью al oop соответствующего вида. (Избегайте использования get(i), потому что это O(N) для некоторых типов списков.)

Примечания:

  1. Давать своему классу то же самое - плохая идея. name как обычно используемый класс в стандартной библиотеке (java.util.ArrayList)

  2. Ваш класс не реализует java.util.List<E>. Должен ли он?

  3. Если вы реализуете java.util.List<E>, вы можете сэкономить много усилий, расширив java.util.AbstractList<E>.

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