कोई एक विधि कैसे बना सकता है जो एक पूर्णांक i
लेता है, और List<T>
के सदस्य को i
पर वर्तमान स्थिति से सूची के सामने तक ले जाया जाता है?सूची के एक सदस्य को सूची के सामने ले जाना
उत्तर
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 उत्तरों में से कोई भी चाल है, लेकिन निकालने और एक सम्मिलित ऑपरेशन करने के बजाय, मैं सुझाव दूंगा कि प्रत्येक आइटम को वांछित स्थितियों से दाईं ओर एक स्थान पर ले जाएं, सूची की शुरुआत में। इस तरह आप आइटम के दाईं ओर स्थित वस्तुओं को स्थानांतरित करने से बचें।
यह @ डीटीबी के उत्तर का एक संशोधन है।
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;
}
}
एक विस्तार विधि के लिए, यह अधिक समझ में आएगा क्योंकि यह डीटीबी की विधि से औसत पर तेज़ है। – Groo
@Groo क्या यह हमेशा बड़ी सूचियों के लिए तेज़ है? – Coops
@CodeBlend: हाँ, बड़े के लिए सूचियों की सूची अधिक स्पष्ट होगी, हालांकि मैं दावा नहीं कर सकता कि आप एक नोटिस करेंगे अभ्यास में वाई अंतर। सैद्धांतिक रूप से, यह विधि और डीटीबी दोनों 'ओ (एन)' हैं, लेकिन डीटीबी के उत्तर 'सूची में। हटाएं' पहले आइटम को हटा देंगे और फिर निम्नलिखित सभी वस्तुओं को एक स्थान पीछे की ओर कॉपी करें, और फिर 'सूची। प्रविष्ट करें (0, आइटम) 'फिर से सूचकांक '0' पर आइटम डालेंगे और फिर सभी वस्तुओं को 1 स्थिति से आगे कॉपी करें। दूसरी तरफ, फेडे की विधि, केवल एक ही स्वीप करता है ('इंडेक्स' के बराबर स्वैप की संख्या)। – Groo
एक मरे हुए घोड़े की धड़कन का खतरा कम:
एक LinkedList इस के लिए अधिक उपयुक्त नहीं होगा? यद्यपि आप यादृच्छिक पहुंच कार्यक्षमता को खो देंगे, सूची की शुरुआत में तत्वों को सम्मिलित करना बहुत आसान होगा (.AddFirst) और बहुत अधिक कुशल।
- 1. jQuery सामने/सूची
- 2. मैं किसी अन्य सूची के सामने एक सूची कैसे सम्मिलित करूं?
- 3. किसी आइटम को सूची में ले जाएं?
- 4. एक सूची में प्रत्येक सदस्य नकल - अजगर
- 5. ऑर्डर सूची की सूची आइटम के भीतर सूची सूची आइटम?
- 6. एक सूची
- 7. डेटाटेबल के कॉलम को एक सूची
- 8. केवल एक वर्ग के सदस्य
- 9. एक सूची ले लो, तरह लोकप्रियता द्वारा और फिर डुप्लिकेट
- 10. एक सूची
- 11. मास्टर हेड को शाखा में ले जाना
- 12. एक सूची के तत्काल बच्चे
- 13. सूची-शैली सीएसएस संपत्ति कहां जाना चाहिए?
- 14. केवल एक सूची में सूची
- 15. स्काला एक सूची
- 16. एक्सएमएल में एक सूची का प्रतिनिधित्व कैसे किया जाना चाहिए?
- 17. एक प्रारंभकर्ता सूची
- 18. पायथन: समानांतर सूची के साथ क्रमबद्ध सूची
- 19. सूची सूची किसी अन्य सूची के आधार पर
- 20. क्लोजर बिना किसी सूची के एक सूची मुद्रित?
- 21. पायथन: के लिए प्रत्येक सूची तत्व सूची
- 22. Django 1.4 - एक सूची के साथ bulk_create
- 23. सूची के लिए रिवर्स इटरेटर?
- 24. स्कैला सूची को अन्य प्रकार के साथ सूची में बदलें
- 25. सूची दृश्य के बिना सूची दृश्य
- 26. क्लक्चरिंग सूची के लिए क्लस्टरिंग सूची
- 27. LINQ - सूची डिक्शनरी के साथ मूल्य सूची
- 28. स्ट्रिंग के सामने से एन अक्षर को
- 29. किसी सूची के लिए
- 30. एक सूची
आप इसे सॉर्ट करने का प्रयास कर रहे हैं, है ना? – vittore
क्या मुझे ऐसा करने के लिए इसे क्रमबद्ध करने की आवश्यकता होगी? मैं सिर्फ सूची के सामने, इंडेक्स I पर एक सदस्य को स्थानांतरित करना चाहता हूं .. बाकी – Shonna
को स्थानांतरित करने की आवश्यकता नहीं है, मैंने आपको एक अपवर्तित किया होगा, लेकिन आपने स्पष्ट उत्तर नहीं चुना है। क्षमा करें :( –