Мне интересно, можем ли мы использовать индекс для доступа к списку
Например:
List<Integer> list;
list[5] //blah....
Мне интересно, можем ли мы использовать индекс для доступа к списку
Например:
List<Integer> list;
list[5] //blah....
Так как [] является оператором, а java не поддерживает перегрузку оператора, вы не можете использовать его со списком. Вместо этого вы должны использовать методы set(int index, T value) и get(int index), которые могут быть подробными, но обеспечивают точную ту же функциональность.
List.get(int) позволяет вам обращаться к элементам с помощью индекса.
Вы можете получить доступ к элементам списка, используя их индекс, используя метод get:
прибудет
public Object get (int index)
Возвраты элемент в указанной позиции в этом списке.
Параметры: индекс - индекс возвращаемого элемента.
Возвращает: элемент в указанной позиции в этом списке.
Броски: IndexOutOfBoundsException - если индекс за пределами допустимого диапазона (индекс < 0 || index >= size()).
Имейте в виду, что индекс в списках основан на 0.
Здесь есть много хороших ответов, но я просто хочу указать, что list.get(i) совпадает с list[i], только если список реализован с массивом (например, ArrayList). Если это LinkedList, вы на самом деле не индексируете get, а скорее повторяетесь.
Итак, если вы используете get() с типом типа интерфейса, особенно в цикле, вы должны проверить, как он реализован, поскольку get() с ArrayList - это O (1), тогда как get() с LinkedList - это O (n) (гораздо медленнее).
альтернативой использованию get(int) является создание массива с использованием toArray()
List<T> list = ...
Object[] array = list.toArray();
если T известно, toArray(T[]) можно использовать для возврата T[] вместо Object[].
Использование toArray имеет смысл только вместо get, если массив действительно необходим (много обращений).
Нет, вы не можете сделать это на Java.
Нет, вы ограничены List.get (i).
Скобки [] определяются на уровне синтаксиса, а не как имя метода, поэтому вы не можете их переопределить. Они используются исключительно для массивов.
Если вы хотите перейти на Scala, более современный язык для JVM, вы найдете унифицированный доступ к массивам и спискам, но оба с круглыми скобками ().