Come posso ottenere l'n-esimo elemento di un'istanza LinkedList? Esiste un modo integrato o potrei dover introdurre la mia implementazione? Ad esempio un metodo di estensione?Come si ottiene l'elemento n-esimo in LinkedList <T>?
Grazie
Come posso ottenere l'n-esimo elemento di un'istanza LinkedList? Esiste un modo integrato o potrei dover introdurre la mia implementazione? Ad esempio un metodo di estensione?Come si ottiene l'elemento n-esimo in LinkedList <T>?
Grazie
Il metodo ElementAt
estensione lo farà:
// This is 0-based of course
var value = linkedList.ElementAt(n);
Non dimenticate questa è un'operazione O (n), perché LinkedList<T>
non fornisce alcun modo più efficiente di accesso a un oggetto in base all'indice. Se hai bisogno di farlo regolarmente, suggerisce che non dovresti usare una lista collegata per iniziare.
Microsoft, per favore, aggiungi la complessità nella documentazione :) –
@Jon non essere nitpicking, ma è necessario che se implemento 'IList
@nawfal: verrà modificato. –
È possibile utilizzare l'ElementAt() metodo di estensione enumerabile. La ragione per cui LinkedList non supporta l'accesso casuale in modo nativo è perché è un'operazione piuttosto inefficiente per la struttura dei dati. Se lo farai spesso dovresti pensare a usare una struttura dati più appropriata.
È possibile farlo con LINQ come in list.ElementAt(n)
o list.Skip(n - 1).First()
, ma se si trova l'accesso indicizzato in un elenco collegato probabilmente si sta facendo qualcosa di sbagliato (gli elenchi collegati non supportano in modo efficiente questa operazione). Forse un'altra struttura di dati sarebbe più appropriata?
avevo bisogno per ottenere il secondo elemento della mia lista (per aggiornare un valore al 1 ° elemento in base al 2 °)
Supponendo che si sta prendendo le misure necessarie per garantire che si hanno due elementi si può semplicemente A fare questo:
list.First.Next.Value
Prima di tutto, perché? Certo hai bisogno di una lista collegata? – alexn
Ho un esempio di InsertedSortList che utilizza metodi come InsertAt (int i) su una struttura di dati LinkedList. Ecco perché volevo chiedere. – pencilCake
È la documentazione SO o MSDN? –