Collection – khái niệm và cách sử dụng trong ngôn ngữ lập trình C Sharp

Đơn giản nhất Collection là một tập hợp các dữ liệu không cùng kiểu. Collection cung cấp rất nhiều các phương thức giúp người dùng thao tác với dữ liệu một cách đơn giản và dễ dàng.

Một trong những ưu điểm lớn nhất của Collection là khả năng tương tác và thay đổi dữ liệu bên trong nó ngay tại thời điểm chạy (run-time).

Microsoft cung cấp một tập hợp các lớp Collections trong thư viện System.Collections. Bên dưới đây là một bảng liệt kê những lớp Collection được sử dụng phổ biến.

Collection - khái niệm và cách sử dụng trong ngôn ngữ lập trình C Sharp

Chi tiết về các lớp Collection trong namespace System.Collections

1. ArrayList

ArrayList là một collection cho phép lưu trữ dữ liệu theo kiểu mảng (truy cập các giá trị bên trong đối tượng này thông qua chỉ số index – chỉ mục). Về cơ bản ArrayList khá giống mảng Object. Tuy nhiên khác với mảng, bạn có thể dễ dàng thêm hay bớt các phần tử bên trong ArrayList ngay tại thời điểm chạy, kích cỡ của ArrayList sẽ tự động thay đổi theo.

Dưới đây là các phương thức và thuộc tính thông dụng của lớp ArrayList

Collection - khái niệm và cách sử dụng trong ngôn ngữ lập trình C Sharp

 

Đáng chú ý nhất trong các thuộc tính này là thuộc tính Count. Đây là thuộc tính trả về số lượng các phần tử có trong ArrayList.

Collection - khái niệm và cách sử dụng trong ngôn ngữ lập trình C Sharp

Trong các phương thức này,  đáng chú ý nhất có thể kể đến:

+ Add – thêm mới một đối tượng vào ArrayList

+ Remove  – loại bỏ đối tượng khỏi ArrayList

+ Insert  – Chèn một đối tượng mới vào ArrayList tại vị trí index cụ thể.

+ Sort – Sắp xếp ArrayList

Ví dụ với ArrayList:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            //Khởi tạo đối tượng
            ArrayList al = new ArrayList();
            //Thêm dữ liệu
            al.Add(1);
            al.Add(2);
            al.Add(3);
            //Sửa giá trị tại vị trí thứ 2 thành 10. Vị trí thứ 2 có index = 1, do index bắt đầu từ 0
            al[1] = 10;
            //Xóa phần tử có giá trị bằng 3
            al.Remove(3);
            //Duyệt bằng chỉ mục index
            for (int index = 0; index < al.Count; index++)
            {
                Console.WriteLine(al[index].ToString());
            }
            Console.WriteLine();
            //Duyệt với foreach
            foreach (int i in al)
            {
                Console.WriteLine(i);
            }
            Console.ReadLine();
        }
    }
}

 

2. Hashtable

Lớp Hashtable cho phép lưu trữ giá trị theo các cặp Key-Value. Thông qua các khóa (Key), người dùng có thể dễ dàng thao tác đến các giá trị (Value) bên trong Hashtable.

Chú ý: Do Hashtable sử dụng khóa để thao tác, nên các giá trị key này phải là duy nhất.

Dưới đây là các phương thức và thuộc tính thông dụng của lớp Hashtable

Collection - khái niệm và cách sử dụng trong ngôn ngữ lập trình C Sharp

Trong đó:

+ Count: Trả về số lượng các cặp key-value có trong Hashtable.

+ Keys: Trả về danh sách các Key trong Hashtable

+ Values: Trả về danh sách các Value trong Hashtable

Collection - khái niệm và cách sử dụng trong ngôn ngữ lập trình C Sharp

 

Trong đó:

+ Add: Phương thức cho phép thêm mới một cặp key và value vào Hashtable. Để đảm bảo khóa Key không bị trùng, nên kiểm tra trước với phương thức ContainsKey.

+ Remove: Xóa cặp key và value có trong Hashtable thông qua tham số key.

+ ContainsKey: Kiểm tra xem khóa key đã có trong Hashtable hay chưa.

Ví dụ với Hashtable:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        { 
            //Khởi tạo đối tượng
            Hashtable ha = new Hashtable();
            //Thêm mới
            ha.Add(1, "A");
            ha.Add(2, "B");
            ha.Add(3, "C");
            //Kiểm tra tồn tại
            if (ha.ContainsKey(2))
            {
                Console.WriteLine("Key=2 đã có");
                Console.WriteLine();
            }
            //Thay đổi giá trị của cặp có Key=2 thành "C"
            if (ha.ContainsKey(2))
            {
                ha[2] = "C";
            }
            //Xóa key=3 
            ha.Remove(3);
            //Duyệt qua toàn bộ Key
            foreach (int key in ha.Keys)
            {
                Console.WriteLine("Key: " + key);
                Console.WriteLine("Value: " + ha[key]); 
                Console.WriteLine();
            }
            Console.WriteLine();
            //Duyệt qua toàn bộ Value
            foreach (String value in ha.Values)
            {
                Console.WriteLine("Value: " + value);
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}

Chúc các bạn thành công !

Dương Linh