C# में List<T>.Insert() मेथड का उपयोग करके किसी सूची में निर्दिष्ट इंडेक्स पर एक तत्व डाला जा सकता है। मौजूदा तत्व स्वचालित रूप से दाईं ओर शिफ्ट हो जाते हैं।
उदाहरण
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
// स्ट्रिंग सूची बनाएं
List items = new List();
items.Add("water");
items.Add("food");
items.Add("air");
Console.WriteLine("मूल सूची:");
for (int i = 0; i < items.Count; i++)
{
Console.WriteLine($" [{i}] {items[i]}");
}
// इंडेक्स 1 पर (दूसरी स्थिति) "shelter" डालें
items.Insert(1, "shelter");
Console.WriteLine("\nInsert(1, \"shelter\") के बाद:");
for (int i = 0; i < items.Count; i++)
{
Console.WriteLine($" [{i}] {items[i]}");
}
}
}
आउटपुट
मूल सूची:
[0] water
[1] food
[2] air
Insert(1, "shelter") के बाद:
[0] water
[1] shelter
[2] food
[3] air
Insert() सिंटैक्स और व्यवहार
public void Insert(int index, T item);
| पैरामीटर | विवरण |
index | डालने की स्थिति (0 से Count तक)। 0 = पहला, Count = अंत में |
item | डालने वाला तत्व |
विभिन्न स्थितियों पर डालना
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
List numbers = new List { 10, 20, 30 };
Console.WriteLine($"मूल: [{string.Join(", ", numbers)}]");
// शुरुआत में (इंडेक्स 0)
numbers.Insert(0, 5);
Console.WriteLine($"Insert(0, 5): [{string.Join(", ", numbers)}]");
// मध्य में (इंडेक्स 2)
numbers.Insert(2, 15);
Console.WriteLine($"Insert(2, 15): [{string.Join(", ", numbers)}]");
// अंत में (इंडेक्स Count)
numbers.Insert(numbers.Count, 40);
Console.WriteLine($"Insert(Count, 40): [{string.Join(", ", numbers)}]");
// ऋणात्मक इंडेक्स - अपवाद फेंकता है
try
{
numbers.Insert(-1, 99);
}
catch (ArgumentOutOfRangeException ex)
{
Console.WriteLine($"\nऋणात्मक इंडेक्स त्रुटि: {ex.Message}");
}
// सीमा से बाहर इंडेक्स - अपवाद फेंकता है
try
{
numbers.Insert(numbers.Count + 1, 99);
}
catch (ArgumentOutOfRangeException ex)
{
Console.WriteLine($"सीमा से बाहर त्रुटि: {ex.Message}");
}
}
}
आउटपुट
मूल: [10, 20, 30]
Insert(0, 5): [5, 10, 20, 30]
Insert(2, 15): [5, 10, 15, 20, 30]
Insert(Count, 40): [5, 10, 15, 20, 30, 40]
ऋणात्मक इंडेक्स त्रुटि: Index must be within the bounds of the List.
सीमा से बाहर त्रुटि: Index must be within the bounds of the List.
Insert() बनाम Add() बनाम InsertRange()
| मेथड | उपयोग | समय जटिलता |
Add(item) | अंत में जोड़ें | O(1) परिशोधित |
Insert(index, item) | निर्दिष्ट स्थिति पर एक तत्व | O(n) - शिफ्टिंग के कारण |
InsertRange(index, collection) | निर्दिष्ट स्थिति पर एकाधिक तत्व | O(n + m) |
AddRange(collection) | अंत में एकाधिक तत्व | O(m) |
प्रदर्शन विचार
// बार-बार शुरुआत में डालना धीमा है - O(n²)
List slow = new List();
for (int i = 0; i < 10000; i++)
slow.Insert(0, i); // हर बार सभी तत्व शिफ्ट होते हैं
// बेहतर: अंत में जोड़ें फिर रिवर्स करें
List fast = new List();
for (int i = 0; i < 10000; i++)
fast.Add(i);
fast.Reverse();
// या LinkedList उपयोग करें यदि बार-बार शुरुआत/मध्य में डालना हो
var linked = new LinkedList();
for (int i = 0; i < 10000; i++)
linked.AddFirst(i); // O(1)
महत्वपूर्ण बिंदु
Insert() मौजूदा तत्वों को दाईं ओर शिफ्ट करता है (कॉपी करता है)
- वैध इंडेक्स रेंज:
0 से Count (सम्मिलित)
- इंडेक्स
Count पर डालना Add() के समान है
- सूची की क्षमता (Capacity) स्वचालित रूप से बढ़ती है
- बार-बार शुरुआत/मध्य में डालने के लिए
LinkedList<T> बेहतर है
Insert() सूची को स्थानांतरित (in-place) करता है, नई सूची नहीं बनाता