我们可以使用像数组索引这样的索引来访问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语言),您将找到对数组和列表的统一访问,但都使用()
括号。