一個怎樣創建一個使用整數i
的方法,並在指數i
從當前位置移動List<T>
的成員列表前面的列表的前面?移動列表的成員
移動列表的成員
回答
的List<T>類並不提供這樣的方法,但你可以編寫獲取項目的擴展方法,刪除它終於重新插入它:
static class ListExtensions
{
static void MoveItemAtIndexToFront<T>(this List<T> list, int index)
{
T item = list[index];
list.RemoveAt(index);
list.Insert(0, item);
}
}
var l = new List<DataItem>();
var temp = l[index];
l.RemoveAt(index);
l.Insert(0, temp);
試試這個
static List<int> idList = new List<int>() { 1, 2, 4, 5, 6, 8, 9 };
private static void moveListItem(int index)
{
int getIndex = 0;
foreach (int item in idList)
{
Console.WriteLine(" Before Id List Value - {0} ,Index - {1} ", item.ToString(), getIndex);
getIndex++;
}
int value = idList[index];
idList.RemoveAt(index);
idList.Insert(0, value);
Console.WriteLine();
getIndex = 0;
foreach (int item in idList)
{
Console.WriteLine(" After Id List Value - {0} ,Index - {1} ", item.ToString(), getIndex);
getIndex++;
}
}
到目前爲止,3個答案中的任何一個都能做到這一點,但我並不是想做一個RemoveAt和一個Insert操作,而是建議將每個項目從所需的位置向左移動一個位置,到列表的開頭。這樣你可以避免移動被移動物品右側的物品。
這是@ dtb答案的修改。
static class ListExtensions
{
static void MoveItemAtIndexToFront<T>(this List<T> list, int index)
{
T item = list[index];
for (int i = index; i > 0; i--)
list[i] = list[i - 1];
list[0] = item;
}
}
對於擴展方法,這會更有意義,因爲它比dtb方法的平均速度更快。 – Groo 2015-09-14 08:54:05
@Groo即使對於更大的列表,它總是更快嗎? – Coops 2016-04-05 12:59:49
@CodeBlend:是的,對於更大列出差異會更明顯,雖然我不能聲稱你會注意到一個在實踐中的差異。理論上講,這個方法和dtb都是'O(n)',但是在dtb的答案中'list.RemoveAt'將首先移除該項目,然後將所有後續項目向後複製一次,然後'list.Insert(0,item) '會再次將索引項'0'插入,然後將所有項目向前複製1個位置。另一方面,Fede的方法只是向後掃描一次(交換次數等於'index')。 – Groo 2016-04-05 13:09:37
在白費口舌的風險:
那不是一個LinkedList更適合呢? 儘管你會失去隨機訪問功能,但在List開頭插入元素會更簡單(.AddFirst),並且效率更高。
- 1. Automapper:成員列表
- 2. 列表成員的細節
- 3. 自動生成的移動構造函數與不可移動的成員
- 4. 移動列表
- 5. 自動完成列表中的PHPDoc/PhpStorm受保護成員
- 6. C++列表:在成員列表
- 7. Prolog成員函數列表
- 8. 列表成員引用
- 9. Mailchimp列表帖子成員
- 10. WCF列表數據成員
- 11. 將演員列表變成演員(Greenfoot)
- 12. 在班級成員中移動右值
- 13. C++移動運營商類成員
- 14. 遷移ASP.Net成員
- 15. 移動的滾動問題(在自動完成列表)
- 16. 如何加入一個列表成員和指示成員爲創建指示和列表成員的名單
- 17. 傳遞存儲成員的列表作爲成員
- 18. 列表編譯的Java類的成員
- 19. 動態生成LINQ(成員)表達式
- 20. 使用常數數據成員或引用成員移動類的ctor
- 21. 複製/移動構造函數的基礎成員成語
- 22. 顯示列表中的成員
- 23. 更新列表框的顯示成員
- 24. ASP成員用戶的排序列表
- 25. 類中成員變量的列表。
- 26. 當前文件中的列表成員
- 27. 獲取列表中的所有成員
- 28. 查找在列表的成員用Perl
- 29. 與DDNAME相關的PDS成員列表
- 30. 檢查python列表問題的成員
你正在嘗試對它進行分類,是嗎? – vittore 2010-04-04 19:26:27
我需要對它進行排序嗎?我只想將索引i處的ONE成員移動到列表的前面..不需要移動其餘的部分 – Shonna 2010-04-04 19:27:23
我會給你一個upvote,但是你沒有選擇明顯的答案。對不起:(。 – 2015-05-06 16:34:54