Можно ли использовать индексный индекс массива для доступа к списку <T>?

Мне интересно, можем ли мы использовать индекс для доступа к списку

Например:

List<Integer> list; 

list[5]     //blah....

Ответы

Ответ 1

Так как [] является оператором, а java не поддерживает перегрузку оператора, вы не можете использовать его со списком. Вместо этого вы должны использовать методы set(int index, T value) и get(int index), которые могут быть подробными, но обеспечивают точную ту же функциональность.

Ответ 2

List.get(int) позволяет вам обращаться к элементам с помощью индекса.

Ответ 3

Вы можете получить доступ к элементам списка, используя их индекс, используя метод get:

прибудет

public Object get (int index)

Возвраты элемент в указанной позиции в этом списке.

Параметры: индекс - индекс возвращаемого элемента.

Возвращает: элемент в указанной позиции в этом списке.

Броски: IndexOutOfBoundsException - если индекс за пределами допустимого диапазона (индекс < 0 || index >= size()).

Имейте в виду, что индекс в списках основан на 0.

Ответ 4

Здесь есть много хороших ответов, но я просто хочу указать, что list.get(i) совпадает с list[i], только если список реализован с массивом (например, ArrayList). Если это LinkedList, вы на самом деле не индексируете get, а скорее повторяетесь.

Итак, если вы используете get() с типом типа интерфейса, особенно в цикле, вы должны проверить, как он реализован, поскольку get() с ArrayList - это O (1), тогда как get() с LinkedList - это O (n) (гораздо медленнее).

Ответ 5

альтернативой использованию get(int) является создание массива с использованием toArray()

List<T> list = ...

Object[] array = list.toArray();

если T известно, toArray(T[]) можно использовать для возврата T[] вместо Object[].
Использование toArray имеет смысл только вместо get, если массив действительно необходим (много обращений).

Ответ 6

Нет, вы не можете сделать это на Java.

Ответ 7

Нет, вы ограничены List.get (i).

Скобки [] определяются на уровне синтаксиса, а не как имя метода, поэтому вы не можете их переопределить. Они используются исключительно для массивов.

Если вы хотите перейти на Scala, более современный язык для JVM, вы найдете унифицированный доступ к массивам и спискам, но оба с круглыми скобками ().