Я хочу спросить вас, что лучше, как добавить элемент в массив, если мне нужно проверить, существует ли индекс (длина массива в порядке)?
1)
private void addItemToArray(int[] arr, int index, int item)
{
if(index >= 0 && index < arr.length) {
//put item
}
}
2 )
private void addItemToArray(int[] arr, int index, int item)
{
try {
//put item
catch(Exception e) {
return;
}
}
2 ответа
Лучше использовать if (первый метод), так как обнаружение ошибок требует больших затрат с точки зрения производительности.
Просто примечание, предложение if неверно, вы хотите проверить
if(index > 0 && index < arr.length){
//put item
}
Исключение определенно является лучшей альтернативой, чем бездействие, поскольку вызывающий метод должен иметь возможность узнать, что предоставленный ими индекс недействителен. Хотя перехватывать исключение и ничего не делать в блоке catch, как вы это делали во втором фрагменте, бессмысленно.
Вы можете взять пример из ArrayList
, который содержит внутренний массив:
/**
* Inserts the specified element at the specified position in this
* list. Shifts the element currently at that position (if any) and
* any subsequent elements to the right (adds one to their indices).
*
* @param index index at which the specified element is to be inserted
* @param element element to be inserted
* @throws IndexOutOfBoundsException {@inheritDoc}
*/
public void add(int index, E element) {
if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size);
ensureCapacity(size+1); // Increments modCount!!
System.arraycopy(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}
Если вы должны избегать создания исключений, самое меньшее, что вы можете сделать, - это заставить метод возвращать boolean
, который указывает, был ли изменен массив.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.