2011-03-26 2 views

risposta

38

Poiché [] è un operatore e java non supporta il sovraccarico dell'operatore, non è possibile utilizzarlo con Elenco. Invece devi usare i metodi set(int index, T value) e get(int index), che possono essere prolissi ma fornire esattamente la stessa funzionalità.

18

List.get(int) consente di accedere agli elementi utilizzando l'indice.

+0

Uomo, ti amo <3. – Kadaj

2

No, non è possibile farlo in Java.

+0

@Downvoter Patrick ha ragione nel dire che 'list [5]' non è possibile in Java, sebbene non abbia menzionato alcuna alternativa. – asgs

+2

@asgs - Non sono il "Downvoter", ma la risposta non è utile, in realtà è sbagliata. Sì, "possiamo usare l'indice per accedere a List" usando 'list.get (int)' o, se davvero * necessario *, 'list.toArray() [5]' [:-) –

+0

@Carlos non sapeva di 'toArray()'. Grazie. – asgs

6

È possibile accedere agli elementi elenco utilizzando il loro indice attraverso l'uso del metodo get:

ottenere

ottenere l'oggetto pubblico (int index)

Returns l'elemento nella posizione specificata in questo elenco.

Parametri: indice - indice dell'elemento da restituire.

Resi: l'elemento nella posizione specificata in questo elenco.

Produce: IndexOutOfBoundsException - se l'indice è fuori campo (indice < 0 || index> = size()).

Ricordare che l'indice negli elenchi è basato su 0.

2

No, sei limitato a List.get (i).

Le parentesi [] sono definite a livello di sintassi, non come nome-metodo, quindi non è possibile sovrascriverle. Sono utilizzati solo per gli array in modo esclusivo.

Se ti piace migrare a Scala, un linguaggio più moderno per JVM, troverai un accesso unificato a matrici ed elenchi, ma entrambi con parentesi ().

5

Ci sono molte buone risposte qui, ma voglio solo precisare che list.get(i) è lo stesso di list[i] solo se l'elenco è implementato con un array (i.e ArrayList). Se si tratta di una LinkedList, non stai indicizzando realmente con get, ma piuttosto iterando.

Quindi, se si utilizza get() con la Lista tipo di interfaccia, in particolare in un ciclo, si dovrebbe verificare come è implementato, come get() con ArrayList è O (1), mentre get() con LinkedList è O (n) (molto più lento).

3

alternativa all'utilizzo get(int) è quello di creare un array utilizzando toArray()

List<T> list = ... 

Object[] array = list.toArray(); 

se T è noto , toArray(T[]) può essere utilizzato per restituire T[] anziché Object[].
L'uso di toArray è significativo solo al posto di get, se è realmente necessario un array (molti accessi).