0
によって削除:C#のLinkedList <>指定されたインデックス
LinkedList<int> myList;
をどのように私はindex n
にある要素を削除しますか?私は、この特定のリストが重複した値を持つことができるので、何の方法も見つけられないようであり、価値によって取り除かれたものだけが良いものではありません。
EG:
myList.removeAt(n);
によって削除:C#のLinkedList <>指定されたインデックス
LinkedList<int> myList;
をどのように私はindex n
にある要素を削除しますか?私は、この特定のリストが重複した値を持つことができるので、何の方法も見つけられないようであり、価値によって取り除かれたものだけが良いものではありません。
EG:
myList.removeAt(n);
リンクされたリストは、スピードに大きな利点を持っている、しかし、あなたは参照を持っていないとき、あなたができる最善であります索引にリストを移動し、ノードをつかんでから削除します。
このプロセスを実行する拡張メソッドがあります。後で別のリストに挿入するか、リスト内でその位置を移動したい場合に備えて、削除されたノードへの参照を返します。
public static class ExtensionMethods
{
public static LinkedListNode<T> RemoveAt<T>(this LinkedList<T> list, int index)
{
LinkedListNode<T> currentNode = list.First;
for (int i = 0; i <= index && currentNode != null; i++)
{
if (i != index)
{
currentNode = currentNode.Next;
continue;
}
list.Remove(currentNode);
return currentNode;
}
throw new IndexOutOfRangeException();
}
}
これは基本的に、LinkedListを使用しないでください。リストを代わりに使用してください。 –
@ HansPassantは理解しましたが、このリストでは、私が望むようにアイテムを動かすことができる必要があります。 –
@RandRandomいつも学習している - LinkedListのデータ構造は、配列の裏にあるデータ構造よりもランダムにシャッフルした方がパフォーマンスが良いと考えられていた。 –