mi chiedo se possiamo usare indice per accedere ListaPossiamo usare indice come indice di array per accedere all'elenco <T>?
Ad esempio:
List<Integer> list;
list[5] //blah....
mi chiedo se possiamo usare indice per accedere ListaPossiamo usare indice come indice di array per accedere all'elenco <T>?
Ad esempio:
List<Integer> list;
list[5] //blah....
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à.
List.get(int)
consente di accedere agli elementi utilizzando l'indice.
No, non è possibile farlo in Java.
@Downvoter Patrick ha ragione nel dire che 'list [5]' non è possibile in Java, sebbene non abbia menzionato alcuna alternativa. – asgs
@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]' [:-) –
@Carlos non sapeva di 'toArray()'. Grazie. – asgs
È 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.
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 ()
.
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).
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).
Uomo, ti amo <3. – Kadaj