Добавить метод для нескольких массивов и ToString? - PullRequest
0 голосов
/ 13 февраля 2019

У меня проблемы с пониманием того, что именно я бы положил в один из моих классов, чтобы создать метод add для 3 массивов одного типа.Вот общие массивы в главном классе

   ArrayContainer<Integer> numberContainer = new ArrayContainer<>();
   ArrayContainer<String> wordContainer = new ArrayContainer<>();
   ArrayContainer<Pokemon> pokedex = new ArrayContainer<>();

Мой конструктор для ArrayContainer:

public ArrayContainer(){
       container = (T[]) new Object[defaultSize];
       numItems = 0;
   }

В моем отдельном классе я запутался, что положить для моего

public void add (T item){}

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

arrayName[index] = whatever;

Но что бы я добавил в этот метод add, который бы добавил к любому массиву, на котором я вызываю метод?Будет ли это контейнер [index] = item;?

Что я должен вернуть, чтобы вернуть элемент в массиве?

1 Ответ

0 голосов
/ 13 февраля 2019
  • Поскольку количество элементов в вашем ArrayContainer заранее неизвестно, вы должны использовать динамический массив, также известный как Список .
  • Затем numItems становится избыточным, поскольку вы можете получить его, вызвав list.size()
  • Ваша функция add должна будет вызвать только list.add.Как отмечено в комментариях, кажется, что вы переписываете / переносите List
  • В вашем методе toString вы можете вернуть строку , которая объединяет все результаты toString из предметов в комплекте. StringBuilder может помочь вам создать «формат», который вам подходит.Конечно, это означает, что объекты, которые вы помещаете в контейнер, должны реализовать toString

Объединение всех вещей даст вам что-то вроде этого:

ArrayContainer

public class ArrayContainer<T> {
    private List<T> items;

    public ArrayContainer() {
        items = new ArrayList<>();
    }

    public void add(T item) {
        items.add(item);
    }

    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("[ ");
        for (T it: items)
            sb.append(it.toString()).append(' ');

        sb.append(']');
        return sb.toString();
    }
}

Main

public class Main {
    public static void main(String[] args) {
        ArrayContainer<String> stringArrayContainer = new ArrayContainer<>();
        stringArrayContainer.add("hello");
        stringArrayContainer.add("world");

        System.out.println(stringArrayContainer);
        // Outputs: [hello world]
    }
}
...