13

次のオブジェクトを宣言します

List<string> list = {"Kate", "John", "Paul", "Eve", "Hugo"};

リストの前に「イブ」を移動したいですか?どうやってやるの。他の要素を並べ替えてはいけません!
出力でこれを取得したい

"Eve", "Kate", "John", "Paul", "Hugo"
4

5 に答える 5

18
list.Remove("Eve");  // Removes the first "Eve" element in the list
list.Insert(0, "Eve");  // Inserts "Eve" at the first position in the list

ただし、リストに複数の「イブ」が含まれている場合、Remove( "Eve")を呼び出すと、最初に出現する「イブ」のみが削除されます。

また、リストの先頭に要素を挿入するのはコストのかかる操作であることを知っておく必要があります。すでにリストにあるすべての要素をシフトする必要があるためです。

アップデート

@AlvinWongがコメントしLinkedList<string>たように、要素を挿入するときにこのオーバーヘッドを回避するための非常に優れたソリューションです。Insert操作はO(1)で行われます(aのO(ni))List。の主な欠点はLinkedList<string>、th要素へのアクセスがiO(i)の操作(aのO(1))であるということListです。

于 2013-01-31T15:03:41.187 に答える
2

削除して最初のインデックスに挿入できます。

List<string> list = new List<string>(){ "Kate", "John", "Paul", "Eve", "Hugo" };
list.Remove("Eve");
list.Insert(0, "Eve");
foreach (var i in list)
{
   Console.WriteLine(i);
}

の特定のインデックスがわかっている場合は"Eve"、メソッドを使用して削除できますList.RemoveAt()

これがDEMOです。

于 2013-01-31T15:04:30.623 に答える
2

(すべてのイブList.RemoveAtを削除しないように)とを使用できます。List.Insert

于 2013-01-31T15:04:56.617 に答える
0

RemoveAtメソッドを使用して、指定されたインデックスからEveを削除し、Insertを使用してリストの先頭にEveを追加できます。

于 2013-01-31T15:06:19.767 に答える
0
list.Remove("Eve");
list.Insert(0, "Eve");
于 2013-01-31T15:07:39.163 に答える