我们可以使用像数组索引这样的索引来访问List 吗?

我想知道我们是否可以使用索引来访问List

例如:

List list; list[5] //blah.... 

由于[]是运算符而java不支持运算符重载,因此不能将它与List一起使用。 相反,您必须使用set(int index, T value)get(int index)方法,这些方法可能很冗长但提供完全相同的function。

List.get(int)允许您使用索引访问元素。

您可以通过使用get方法使用索引访问List元素:

得到

public Object get(int index)

返回此列表中指定位置的元素。

参数:index – 要返回的元素的索引。

返回:此列表中指定位置的元素。

抛出:IndexOutOfBoundsException – 如果索引超出范围(index <0 || index> = size())。

请记住,列表中的索引是基于0的。

这里有很多好的答案,但我只想指出list.get(i)list[i]相同,只有列表是用数组实现的(即ArrayList)。 如果它是LinkedList,你实际上并不是用get索引,而是迭代。

因此,如果你使用get()接口类型List,特别是在循环中,你应该检查它是如何实现的,因为带有ArrayList的get()是O(1)而带有LinkedList的get()是O(n)(慢得多) )。

使用get(int)的替代方法是使用toArray()创建一个数组

 List list = ... Object[] array = list.toArray(); 

如果T 已知 ,则可以使用toArray(T[])返回T[]而不是Object[]
如果确实需要一个数组(很多访问),使用toArray只是有意义的,而不是get

不,你不能用Java做到这一点。

不,你只限于List.get (i)

方括号[]在语法级别定义,而不是方法名称,因此您无法覆盖它们。 它们仅用于arrays。

如果您希望迁移到Scala(一种更现代的JVM语言),您将找到对数组和列表的统一访问,但都使用()括号。