2011-03-26 18 views

回答

38

由於[]是一個運算符,並且java不支持運算符重載,所以不能將它與List一起使用。相反,您必須使用set(int index, T value)get(int index)方法,該方法可能冗長但提供了完全相同的功能。

18

List.get(int)允許您訪問使用索引元素。

+0

男人,我愛你<3。 – Kadaj 2017-03-28 20:03:59

2

不,你不能在Java中這樣做。

+0

@Downvoter Patrick在說'list [5]'在Java中是不可能的,儘管他沒有提到任何替代方案。 – asgs 2011-03-26 09:27:16

+2

@asgs - 我不是「Downvoter」,但答案沒有用,實際上是錯誤的。是的,「我們可以使用list.get(int)'或者如果真的*需要*,'list.toArray()[5]'[:-) – 2011-03-26 09:52:53

+0

@Carlos不知道的,我們可以使用索引來訪問List '指定者()'。謝謝。 – asgs 2011-03-26 09:55:40

6

您可以通過使用get方法的使用他們的索引來訪問列表元素:

得到

公共對象獲取(INT指數)

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

參數:index - 要返回的元素索引。

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

拋出: IndexOutOfBoundsException - 如果 索引超出範圍(index < 0 || 指數> =尺寸())。

請記住,列表中的索引是基於0的索引。

2

不,您僅限於List.get (i)

括號[]在語法級別上定義,而不是方法名稱,因此您不能覆蓋它們。它們僅用於陣列。

如果您想遷移到JVM的更現代的語言Scala,您會發現統一訪問數組和列表,但都使用圓括號()

5

這裏有很多很好的答案,但我只想指出,list.get(i)list[i]相同,只有當列表使用數組(即ArrayList)實現時纔是如此。如果它是一個LinkedList,你實際上並沒有索引get,而是迭代。

所以如果你使用get()接口類型列表中,特別是在一個循環中,你應該檢查它是如何實現的,爲get()與ArrayList的是O(1),而get()與LinkedList的是O(n)(慢得多)。

3

替代使用get(int)是創建使用toArray()

List<T> list = ... 

Object[] array = list.toArray(); 

數組如果T是已知toArray(T[])可用於返回T[]代替Object[]
使用toArray只是有意義的,而不是get,如果真的需要一個數組(很多訪問)。

相關問題