Giáo trình phân tích cấu tạo bo mạch mảng một chiều các giá trị bên trong dấu ngoặc p9 - Pdf 19

Ngôn Ngữ Lập Trình C#
Console.WriteLine();
}
}
}

 Kết quả:
intQueue values: 0 5 10 15 20
Dequeue 0
intQueue values: 5 10 15 20
Dequeue 5
intQueue values: 10 15 20
Peek 10
intQueue values: 10 15 20

Trong ví dụ này ArrayList được thay bằng Queue, chúng ta cũng có thể Enqueue những đối
tượng do ta định nghĩa. Trong trong chương trình trên đầu tiên ta đưa 5 số nguyên vào trong
hàng đợi theo tứ tự 0 5 10 15 20. Sau khi đưa vào ta lấy ra phần tử đầu tiên là 0 nên hàng đợi
còn lại 4 số là 5 10 15 20, lần thứ hai ta lấy ra 5 và chỉ còn 3 phần tử trong mảng 10 15 20.
Cuối cùng ta dùng phương thức Peek() là chỉ xem phần tử đầu hàng đợi chứ không xóa chúng
ra khỏi hàng đợi nên kết quả cuối cùng hàng đợi vẫn còn 3 số là 10 15 20. Một điểm lưu ý là
lớp Queue là một lớp có thể đếm được enumerable nên ta có thể truyền vào phương thức
PrintValues với kiểu tham số khai báo IEnumerable. Việc chuyển đổi này là ngầm định.
Trong phương thức PrintValues ta gọi phương thức GetEnumerator, nên nhớ rằng đây là
phương thức đơn của tất cả những lớp IEnumerable. Kết quả là một đối tượng Enumerator
được trả về, do đó chúng ta có thể sử dụng chúng để liệt kê tất cả những đối tượng có trong
tập hợp.
Ngăn xếp (stack)
Ngăn xếp là một tập hợp mà thứ tự là vào trước ra sau hay vào sao ra trước (LIFO), tương
như một chồng đĩa được xếp trong nhà hàng. Đĩa ở trên cùng tức là đĩa xếp sau thì được lấy
ra trước do vậy đĩa nằm dưới đáy tức là đĩa đưa vào đầu tiên sẽ được lấy ra sau cùng.

phương thức CopyTo() sẽ chép những thành phần của chúng đến mảng một chiều đã hiện
hữu, và viết chồng lên nội dung của mảng bắt đầu tại chỉ mục mà ta xác nhận. Phương thức
ToArray() trả về một mảng mới với những nội dung của những thành phần trong mảng.
 Ví dụ 9.16: Sử dụng kiểu Stack.

namespace Programming_CSharp
{
using System;
using System.Collections;
// lớp đơn giản để lưu trữ
public class Tester
{
static void Main()
{
Stack intStack = new Stack();
// đưa vào ngăn xếp
for (int i=0; i < 8; i++)
{
intStack.Push(i*5);
Mảng, Chỉ Mục, và Tập Hợp
264
.
.
Ngôn Ngữ Lập Trình C#
}
// hiển thị stack
Console.Write(“intStack values:\t”);
PrintValues( intStack );
// xóa phần tử đầu tiên
Console.WriteLine(“\nPop\t{0}”, intStack.Pop());

Console.WriteLine(“\nThe new array: ”);
PrintValues( myArray );
Mảng, Chỉ Mục, và Tập Hợp
265
.
.
Ngôn Ngữ Lập Trình C#
}
public static void PrintValues(IEnumerable myCollection)
{
IEnumerator myEnumerator = myCollection.GetEnumerator();
while (myEnumerator.MoveNext())
Console.Write(“{0} ”, myEnumerator.Current);
Console.WriteLine();
}
}
}

 Kết quả:
intStack values: 35 30 25 20 15 10 5 0
Pop 35
intStack values: 30 25 20 15 10 5 0
Pop 30
intStack values: 25 20 15 10 5 0
Peek 25
intStack values: 25 20 15 10 5 0
Target array:
0 100 200 300 400 500 600 700 800 0 0 0
Target array after copy:
0 100 200 300 400 500 25 20 15 10 5 0

Tuy nhiên, thật không thuận tiện khi khi truy cập các thủ phủ của các bang thông qua cấu trúc
mảng như vậy. Giả sử nếu chúng ta muốn truy cập thủ phủ của bang Massachusett, không
phải dễ dàng xác định rằng thứ tự của bang là thứ 21 theo alphabe.
Một cách thuận tiện hơn là lưu trữ thủ phủ theo tên của bang. Một từ điển cho phép chúng ta
lưu trữ một giá trị (trong trường hợp này là thủ phủ) và với một khóa truy cập (là tên của
bang). Kiểu dữ liệu từ điển trong .NET Framework có thể kết hợp bất cứ kiểu khóa nào như
kiểu chuỗi, số nguyên, đối tượng với bất cứ kiểu giá trị nào (chuỗi, số nguyên, kiểu đối
tượng).
Thuộc tính quan trọng của một từ điển tốt là dễ thêm giá trị mới vào, và nhanh chóng truy cập
đến giá trị. Một vài từ điển thì nhanh hơn về thời gian thêm một giá trị mới vào, một số khác
thì tối ưu cho việc truy cập. Một trong minh họa cho kiểu từ điển là kiểu dữ liệu hashtable
hay còn gọi là bảng băm.
Hashtables
Hashtable là một kiểu từ điển được tối ưu cho việc truy cập được nhanh. Một số các
phương thức chính và các thuộc tính của kiểu dữ liệu Hashtable được trình bày trong bảng
9.6 dưới.
Phương thức- thuộc tính Mục đích
Synchronized() Phương thức static trả về một Hashtable wrapper
được thread-safe.
Count Thuộc tính trả về số thành phần trong hashtable
IsReadOnly Thuộc tính xác định hashtable là chỉ đọc
IsSynchronized Thuộc tính xác định hashtable được đồng bộ
SyncRoot Thuộc tính trả về đối tượng có thể được sử dụng để
đồng bộ truy cập Hastable.
Mảng, Chỉ Mục, và Tập Hợp
267
.
.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status