Пытаюсь найти лучший способ выполнить "TODO's" для моего метода добавления. нужно обработать особый случай, когда мы добавляем в начало списка (index = 0), и нужно обработать особый случай, когда список пуст и index = 0
Вот метод:
public void add(int index, T item) throws IllegalArgumentException {
if (index < 0 || index > size) {
throw new IllegalArgumentException();
} else {
// TODO need to handle the special case where we are adding
// to the beginning of the list (index = 0)
// TODO need to handle the special case where the list is empty
// and index = 0
int counter = 0;
Node<T> current = head;
while (counter < index-1) {
counter++;
current = current.next;
}
Node<T> newNode = new Node(item);
newNode.next = current.next;
current.next = newNode;
size++;
}
}
1 ответ
Для случая 0:
if (index == 0) {
Node<t> newNode = new Node(item);
newNode.next = head
head = newNode
return;
}
Он будет работать одинаково хорошо, если список пуст (я предполагаю, что head
равен нулю), поэтому вам не нужен дополнительный оператор if
для проверки этого.
Я предлагаю вам прочитать это и < href = "http://www.tutorialspoint.com/data_structures_algorithms/" rel = "nofollow noreferrer"> этот учебник .
Кроме того, вам не нужен оператор else
после первого if
. Если выбрано исключение, никакой код после этого выполняться не будет. Итак, для ясности, вместо того, чтобы писать:
void someMethod() {
if (condition) {
throw new Exception();
}
else {
// rest of the function here
}
}
Вы можете просто написать:
void someMethod() {
if (condition)
throw new Exception();
// rest of the function here, no redundant indentation
}
Рассмотрите возможность возврата объекта this
из метода. Это позволит вам выполнить цепочку методов. Я не знаю, как называется ваш класс, поэтому в моем примере я назову его MyList
.
public MyList<T> add(int index, T item) {
// method implementation
return this;
}
А затем использование вместо:
MyList<Integer> myList = new MyList<>();
myList.add(0, 1);
myList.add(0, 2);
myList.add(0, 3);
Вы сможете написать с тем же результатом:
MyList<Integer> myList = new MyList<>();
myList.add(0, 1)
.add(0, 2)
.add(0, 3);
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.