Giới thiệu
Phương thức InsertRange(int index, IEnumerable<T> collection) chèn toàn bộ các phần tử của một tập hợp vào List tại vị trí index. Các phần tử hiện tại từ index trở đi bị dịch chuyển.
Ví dụ cơ bản
Listarr1 = new List { 10, 20, 30, 40, 50 }; int[] arr2 = { 60, 70, 80, 90 }; arr1.InsertRange(5, arr2); // Chèn tại cuối (index = Count)
Ví dụ hoàn chỉnh
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
List arr1 = new List { 10, 20, 30, 40, 50 };
Console.WriteLine("Initial List ...");
foreach (int i in arr1) Console.WriteLine(i);
int[] arr2 = { 60, 70, 80, 90 };
arr1.InsertRange(5, arr2);
Console.WriteLine("After adding elements ...");
foreach (int i in arr1) Console.WriteLine(i);
}
}
Kết quả
Initial List ... 10 20 30 40 50 After adding elements ... 10 20 30 40 50 60 70 80 90
Các trường hợp InsertRange
index = 0: Chèn vào đầu (prepend).index = Count: Chèn vào cuối (tương đươngAddRange).0 < index < Count: Chèn vào giữa.
So sánh AddRange vs InsertRange
| Phương thức | Vị trí | Hiệu suất |
|---|---|---|
AddRange | Cuối list | O(n) - chỉ copy |
InsertRange | Vị trí bất kỳ | O(n + m) - phải shift phần tử |
Lưu ý
- Tham số collection có thể là bất kỳ
IEnumerable<T>: array, List, array, v.v. - Ném
ArgumentOutOfRangeExceptionnếu index < 0 hoặc > Count. - Ném
ArgumentNullExceptionnếu collection là null. - Với List lớn và chèn thường xuyên ở đầu/giữa, cân nhắc
LinkedList<T>.