У меня есть домашнее задание, которое нужно выполнить в java, о типах ArrayList и Generics.
У меня есть 2 класса: -> CoupeDeA -> TableauPartiel
CoupeDeA - просто описатель, откуда и кудамассив вырезан.(Он содержит только две частные целочисленные переменные «начало» и «конец»)
TableauPartiel - это класс, в котором находится ArrayList.
Моя проблема заключается в том, что мне нужно создать метод в TableauPartiel следующим образом:
public TableauPartiel<E> coupe(CoupeDeA coupe)
И возвращаемый TableauPartiel должен быть ссылкой на мой начальный TableauPartiel.Пример:
Integer[] arr = {8,7,6,5};
TableauPartiel<E> tab = new TableauPartiel<>(arr);
TableauPartiel<E> tab2 = tab.coupe(1,3);
tab2.set(1,45);
Предполагается, что этот код устанавливает 45 на индекс 1 моего tab2 и одновременно устанавливает 45 на индекс 2.
Но я пробовал много разных способов, и мне удалосьчтобы получить список, но он не указывает на мой исходный ArrayList.
Например, я попробовал что-то вроде этого:
private ArrayList<E> tableau;
...
public TableauPartiel<E> coupe(Coupe coupe)
throws IndexOutOfBoundsException {
if (coupe.getBegin() >= 0 && coupe.getEnd() <= tableau.size()) {
TableauPartiel<E> tab = new TableauPartiel<>((E[]) new Object[coupe.getEnd()-coupe.getBegin()]);
for (int i = 0; i < coupe.getEnd()-coupe.getBegin(); ++i) {
tab.set(i, this.get(coupe.getBegin()+i));
}
return tab;
} else {
throw new IndexOutOfBoundsException();
}
}
Как я могу получить список, который ссылается наего оригинальный ArrayList?
Я нашел решение для своего кода с помощью метода subList и путем переключения подписи моего ArrayList на List, но мой учитель не хочет, чтобы мы наконец использовали subList.Вот мой код с методом subList:
TableauPartiel<E> tab;
if (coupe.getDebut() >= 0 && coupe.getFin() <= taille()) {
if (coupe.getFin() == -1)
tab = new TableauPartiel<>(tableau.subList(coupe.getDebut(),taille()));
else
tab = new TableauPartiel<>(tableau.subList(coupe.getDebut(),coupe.getFin()));
return tab;
} else {
throw new IndexOutOfBoundsException();
}
}