Tải bản đầy đủ (.pdf) (9 trang)

Mảng, Chỉ Mục, Tập Hợp phần cuối

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (195.44 KB, 9 trang )

Ví dụ 9.17 bắt đầu bằng việc tạo một bảng Hashtable mới, sử dụng các giá trị mặc định
của dung lượng, phương thức tạo mã băm và phương tức so sánh. Tiếp sau là việc thêm
3 bộ giá trị vào theo thứ tự khóa/giá trị. Sau khi các item đã được thêm vào chúng ta có
thể lấy giá trị thông qua khóa với cách thức dùng toán tử offset.

Tập khóa và tập giá trị

Các kiểu từ cung cấp thêm hai thuộc tính là thuộc tính Keys, và thuộc tính Values.
Trong
đó Keys truy cập đối tượng ICollection với tất cả những khóa trong Hashtable,
và Values truy cập đối tượng ICollection với tất cả giá trị. Ví dụ 9.18 minh họa như
sau.
Ví dụ 9.18 Tập khóa và tập giá trị.
-----------------------------------------------------------------------------

namespace Progrmming_CSharp

{


using System;

using System.Collections;

public class Tester

{


static void Main()


{


// tạo và khởi tạo hashtable

Hashtable hashTable = new Hashtable();
hashTable.Add(“00440123”,”Ngoc Thao”);
hashTable.Add(“00123001”,”My Tien”);
hashTable.Add(“00330124”,”Thanh
Tung”);
// nhận tập khóa

ICollection keys = hashTable.Keys;

// nhập tập giá trị

ICollection values = hashTable.Values;

// xuất tập khóa

foreach( string s in keys)

{




Console.WriteLine(“{0}”, s);

}



// xuất tập giá trị

foreach( string s in values)

{


Console.WriteLine(“{0}”, s);

}

}

}

}


-----------------------------------------------------------------------------
Kết quả:

00123001

00440123

00330124

My Tien

Ngoc Thao
Thanh
Tung
-----------------------------------------------------------------------------

Mặc dù thứ tự của keys không được đảm bảo theo thứ tự nhưng chúng đảm bảo rằng cùng
với thứ tự đưa ra của giá trị. Như chúng ta thấy trên khóa 00123001 tương ứng với My
Tien,...

Giao diện IDictionaryEnumerator

Những đối tượng IDictionary cũng hỗ trợ vòng lặp foreach bằng việc thực thi
phương thức GetEnumerator(), phương thức này trả về một IDictionaryEnumerator.
IDictionaryEnumerator được sử dụ
ng để liệt kê bất cứ đối tượng IDictionary nào. Nó
cung cấp thuộc tính để truy cập cả khóa và giá trị cho mỗi thành phần trong từ điển. Ta
có ví dụ 9.19 minh họa như sau:
Ví dụ 9.16: sử dụng giao diện IDictionaryEnumerator.
-----------------------------------------------------------------------------

namespace Progrmming_CSharp

{


using System;

using System.Collections;

public class Tester


{


static void Main()

{




// tạo và khởi tạo hashtable

Hashtable hashTable = new Hashtable();
hashTable.Add(“00440123”,”Ngoc Thao”);
hashTable.Add(“00123001”,”My Tien”);
hashTable.Add(“00330124”,”Thanh Tung”);
Console.WriteLine(“hashTable”);
Console.WriteLine(“Count: {0}”,hashTable.Count);
Console.WriteLine(“Keys and Values:”);
Print( hashTable );

}


public static void Print(Hashtable table)

{



IDictionaryEnumerator enumerator = table.GetEnumerator();

while ( enumerator.MoveNext() )

{


Console.WriteLine(“\t{0}:\t{1}”,
enumerator.Key, enumerator.Value);
}


Console.WriteLine();

}

}

}


-----------------------------------------------------------------------------
Kết quả:
hashTableg
Count: 3
Keys and Values:

00123001: My Tien

00440123: Ngoc Thao


00330124: Thanh Tung
-----------------------------------------------------------------------------

Câu hỏi và trả lời

Câuhỏi
1: Điều phân biệt giữa mảng và các thành phần bên trong một mảng?
Trả lời 1
: Mảng là kiểu dữ liệu tham chiếu, còn các thành phần bên trong mảng
được cấp phát dựa theo kiểu dữ liệu của chúng. Do vậy một mảng của kiểu dữ
liệu tham chiếu sẽ không chứa giá trị gì cả mà chỉ tham chiếu đến những thành phần
được tạo ra trên heap.
Câuhỏi 2
: Một lớp có bộ chỉ mục khác một mảng như thế nào?

×