Можно ли использовать индексный индекс массива для доступа к списку <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, вы найдете унифицированный доступ к массивам и спискам, но оба с круглыми скобками ()
.