30 Collection và List

1. Khái niệm về Collection và List

Collection

  • Collection trong C# là các cấu trúc dữ liệu dùng để lưu trữ và quản lý tập hợp các đối tượng.
  • Collection cung cấp các phương pháp linh hoạt để thêm, xóa, duyệt và sắp xếp dữ liệu.
  • Một số loại collection phổ biến trong C#:
    • List<T>: Danh sách kiểu dữ liệu tổng quát.
    • Dictionary<TKey, TValue>: Bảng ánh xạ giữa khóa và giá trị.
    • Queue<T>: Hàng đợi.
    • Stack<T>: Ngăn xếp.
    • LinkedList<T>: Danh sách liên kết.
    • HashSet<T>: Bộ tập hợp.

List

  • List<T> là một trong những collection phổ biến nhất, đại diện cho một danh sách động lưu trữ các phần tử kiểu dữ liệu tổng quát T.
  • Nó nằm trong namespace System.Collections.Generic và hỗ trợ các thao tác thêm, xóa, tìm kiếm, và sắp xếp phần tử.

2. Cách khởi tạo List<T>

Cách khởi tạo cơ bản:

  • Sử dụng từ khóa new để khởi tạo một danh sách trống:
List<int> numbers = new List<int>();

Khởi tạo với các phần tử ban đầu:

  • Truyền tập hợp các phần tử vào constructor:
List<int> numbers = new List<int> { 1, 2, 3 };

3. Các phương thức thao tác trên List

1. Phương thức Add

  • Chức năng: Thêm một phần tử vào cuối danh sách.
  • Ví dụ:
List<int> numbers = new List<int>();
numbers.Add(10); // Thêm phần tử 10
Console.WriteLine(string.Join(", ", numbers)); // Output: 10

2. Phương thức AddRange

  • Chức năng: Thêm một tập hợp các phần tử vào cuối danh sách.
  • Ví dụ:
List<int> numbers = new List<int> { 1, 2 };
int[] moreNumbers = { 3, 4, 5 };
numbers.AddRange(moreNumbers); // Thêm các phần tử từ mảng
Console.WriteLine(string.Join(", ", numbers)); // Output: 1, 2, 3, 4, 5

3. Phương thức Insert

  • Chức năng: Chèn một phần tử vào vị trí chỉ định trong danh sách.
  • Ví dụ:
List<int> numbers = new List<int> { 1, 2 };
int[] moreNumbers = { 3, 4, 5 };
numbers.AddRange(moreNumbers); // Thêm các phần tử từ mảng
Console.WriteLine(string.Join(", ", numbers)); // Output: 1, 2, 3, 4, 5

4. Phương thức Remove

  • Chức năng: Xóa phần tử đầu tiên có giá trị khớp với giá trị được chỉ định.
  • Ví dụ:
List<int> numbers = new List<int> { 1, 2, 3, 4 };
numbers.Remove(3); // Xóa phần tử 3
Console.WriteLine(string.Join(", ", numbers)); // Output: 1, 2, 4

5. Phương thức RemoveAt

  • Chức năng: Xóa phần tử tại vị trí chỉ định.
  • Ví dụ:
List<int> numbers = new List<int> { 1, 2, 3, 4 };
numbers.RemoveAt(2); // Xóa phần tử tại vị trí 2
Console.WriteLine(string.Join(", ", numbers)); // Output: 1, 2, 4

6. Phương thức Clear

  • Chức năng: Xóa tất cả các phần tử trong danh sách.
  • Ví dụ:
List<int> numbers = new List<int> { 1, 2, 3 };
numbers.Clear(); // Xóa toàn bộ danh sách
Console.WriteLine(numbers.Count); // Output: 0

7. Phương thức Contains

  • Chức năng: Kiểm tra xem danh sách có chứa phần tử được chỉ định hay không.
  • Ví dụ:
List<int> numbers = new List<int> { 1, 2, 3 };
bool containsTwo = numbers.Contains(2); // Kiểm tra phần tử 2
Console.WriteLine(containsTwo); // Output: True

8. Phương thức IndexOf

  • Chức năng: Trả về chỉ số của phần tử đầu tiên có giá trị được chỉ định.
  • Ví dụ:
List<int> numbers = new List<int> { 1, 2, 3, 2 };
int index = numbers.IndexOf(2); // Lấy chỉ số của phần tử 2
Console.WriteLine(index); // Output: 1

9. Phương thức Sort

  • Chức năng: Sắp xếp các phần tử trong danh sách theo thứ tự tăng dần.
  • Ví dụ:
List<int> numbers = new List<int> { 4, 1, 3, 2 };
numbers.Sort(); // Sắp xếp danh sách
Console.WriteLine(string.Join(", ", numbers)); // Output: 1, 2, 3, 4

4. Các đặc điểm quan trọng của List<T>

  • Kích thước động: List<T> tự động mở rộng hoặc thu hẹp kích thước khi thêm hoặc xóa phần tử.
  • Chỉ mục: Các phần tử trong danh sách có thể được truy cập thông qua chỉ số (0-based index).
List<int> numbers = new List<int> { 10, 20, 30 };
Console.WriteLine(numbers[1]); // Output: 20

5. So sánh List<T> với các Collection khác

Tính năngList<T>ArrayDictionary<TKey, TValue>
Kích thướcLinh hoạtCố địnhLinh hoạt
Truy cập phần tửQua chỉ sốQua chỉ sốQua khóa
Sắp xếpCó phương thức hỗ trợKhông hỗ trợ trực tiếpKhông hỗ trợ trực tiếp
Chứa khóaKhôngKhông

6. Lời kết

  • List<T> là một công cụ mạnh mẽ, cung cấp các phương thức tiện lợi để quản lý danh sách các đối tượng.
  • Nó phù hợp khi cần thao tác với danh sách động và truy cập phần tử bằng chỉ số.
  • Trong các tình huống cụ thể, bạn có thể cân nhắc sử dụng các loại collection khác như Dictionary<TKey, TValue> hoặc Queue<T> để đạt hiệu quả cao nhất.
Để lại một bình luận 0

Your email address will not be published. Required fields are marked *