我声明了以下对象
List<string> list = {"Kate", "John", "Paul", "Eve", "Hugo"};
我想在我的名单前面移动“夏娃”?我怎样才能做到这一点。我不能重新排序其他元素!
在输出中我想得到这个
"Eve", "Kate", "John", "Paul", "Hugo"
答案 0 :(得分:17)
list.Remove("Eve"); // Removes the first "Eve" element in the list
list.Insert(0, "Eve"); // Inserts "Eve" at the first position in the list
但是,如果您的列表包含多个“Eve”,则调用Remove(“Eve”)将仅删除第一次出现的“Eve”。
而且您必须知道在列表开头插入元素是一项昂贵的操作。因为必须移动列表中已有的所有元素。
正如@AlvinWong评论的那样,LinkedList<string>
是一个非常好的解决方案,可以在插入元素时避免这种开销。 Insert
操作在O(1)(List
中的O(n-i))中完成。 LinkedList<string>
的主要缺点是访问i
元素是O(i)中的一个操作(List
中的O(1))。
答案 1 :(得分: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
。
答案 2 :(得分:2)
您可以使用List.RemoveAt
(这样就不会删除所有 Eve)和List.Insert
。
答案 3 :(得分:0)
您可以使用RemoveAt方法从给定索引中删除Eve,并使用Insert在列表开头添加Eve。
答案 4 :(得分:0)
list.Remove("Eve");
list.Insert(0, "Eve");