Các Collection chuyên biệt hóa

Một phần của tài liệu Bài 8 Collection và Generics Nền tảng lập trình C Trung tâm tin học Đại học KHTN (Trang 41 - 55)

BitArrayBitVector32BitVector32BitVector32StringCollectionStringDictionaryNameValueCollection

BitArray

− Là tập hợp có thể thay đổi kích thước

Phải khai báo kích thước ban đầu

Không tự động thay đổi kích thước

− Hỗ trợ các thao tác cơ bản trên dữ liệu bit như

And

Or

Not

XorXor

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các Collection chuyên bit hóa

BitArray

− Khi khKhi khởởi ti tạạo: giá tro: giá trịị mmặặc c địđịnh các phnh các phầần tn tửử là falselà false

− Chức năng mạnh nhất của BitArray là thực hiện các phép toán trên bit với 2 đối tượng BitArray có cùng

p p g y g

BitVector32

− Thích hThích hợợp cho vip cho việệc xc xửử lý các bit clý các bit củủa ma mộột st sốố llớớnn

Dữ liệu dược lưu dưới dạng số nguyên 32 bit

Mọọi xử lý trên BitVector32 sý ẽ thay y đổi giá trg ịị của số

nguyên chứa trong nó

Lấy giá trị số nguyên thông qua thuộc tính Data

Khô thể th đổi kí h th ớ

− Không thể thay đổi kích thước

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các Collection chuyên bit hóa

BitVector32 - Bit Mask

− Cho phép tCho phép tạạo bit mask theo tho bit mask theo thứứ ttựự tutuầần tn tựự thông qua thông qua phương thức tĩnh CreateMask.

− Ví dụ: gán giá trg g ị cho 4 bit đầu tiên của 1 số nguyên g y 32 bit.

BitVector32 - Bit Mask

− TTạạo tho thểể hihiệện BitVector32n BitVector32 BitVector32 v=new BitVector32(0);

− Tạo mask cho bit đầu tiên

BitVector32 v new BitVector32(0);

int fBit=BitVector32.CreateMask();

− Tạo bit mask thứ 2 với tham số là bit mask trước

int cBit=BitVector32.CreateMask(fBit);

trước

− Lặp lại bước trên cho tới khi tạo xong 4 bit mask

int tBit=BitVector32.CreateMask(cBit);

i f Bi Bi V 32 C M k( Bi ) int foBit=BitVector32.CreateMask(tBit);

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các Collection chuyên bit hóa

BitVector32 - Bit Packing

− HHỗỗ trtrợợ ggộộp nhip nhiềều su sốố nhnhỏỏ thành 1 sthành 1 sốố llớớn:n:

Thường được dùng để giảm bộ nhớ lưu trữ khi xử lý các số nhỏ (rất nhỏ). − Ví dụ : cần lưu 3 số nguyên • Số thứ nhất: max=10 Cần 3 số ê I t16 ? BitV t 32Dùng 1 • Số thứ hai: max=50Số thứ ba: max=500

BitVector32 - Bit Packing Packing BitVector32.Section fs = BitVector32.CreateSection(10); BitVector32.Section ss = BitVector32 CreateSection(50 fs); − Tạo section lưu số nguyên có kích thước xác định BitVector32.CreateSection(50,fs); BitVector32.Section ts = BitVector32.CreateSection(500,ss); BitVector32 pb = new BitVector32(0);

thước xác định − Gán giá trị cho các section pb[fs] = 10; pb[ss] = 1; pb[ts] = 192; − In kết quả Console.WriteLine(pb[fs]); Console.WriteLine(pb[ss]); Console.WriteLine((pb[ts]p [ ]);); Console.WriteLine(pb.Data); Console.WriteLine(pb);

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các Collection chuyên bit hóa

CollectionString

− Là mLà mộột tt tậập hp hợợp p độđộngng

− Chỉ lưu chuỗi ký tự

− Các chức năng tương tự như ArrayList

− Các chức năng tương tự như ArrayList

StringCollection coll=new StringCollection();

coll.Add(“First”); coll.Add(“Second”); coll.Add(“Third”);

String third=g coll[2][ ];; ?

StringDictionary

− Là mLà mộột phiên bt phiên bảản tn từừ đđiiểển mn mạạnhnh

− Sử dụng tương tự như HashTable

Key/valueKey/value đềđều có kiu có kiểểu Stringu String

StringDictionary dict=new StringDictionary(); dict[“First”]=“1st”;

dict[“Second”]=“2nd”; dict[“second”]=“second”;

string second=g dict[“Second”][ ]; // 2; nd

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các Collection chuyên bit hóa

NameValueCollection

− TTươương tng tựự StringDictionaryStringDictionary

Key/ value đều có kiểu String

− ĐặĐặcc đđiiểểm:m:

Cho phép có nhiều value cho 1 key

Truy xuất value thông qua chỉ mục và key

− Thêm phần tử: phương thức Add

NameValueCollection

NameValueCollection nv=new NameValueCollection();

nv.Add(“Key”,”Some Text”); nv.Add(“Key”,”More Text”);

foreach (string s in nv.( g GetValues(“Key”)){( y )){ Console.WriteLine(s);

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các Collection chuyên bit hóa

NameValueCollection

NameValueCollection nv = new NameValueCollection();(); nv["First"]= "1st";

nv["First"]= "First";

nv.Add("Second", "2nd");

nv.Add("Second", "Second");

Console WriteLine("First length:"+nv GetValues("First") Length); Console.WriteLine( First length: +nv.GetValues( First ).Length);

NameValueCollection

NameValueCollection nv = new NameValueCollection();();

nv.Add(“First", “1st"); nv.Add("Second", "2nd");

nv.Add("Second", "Second"); for (int i=0;i<nv.Count;i++){

Console WriteLine(nv[i]); Console.WriteLine(nv[i]); }

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Generic

Khái nim

Một phần của tài liệu Bài 8 Collection và Generics Nền tảng lập trình C Trung tâm tin học Đại học KHTN (Trang 41 - 55)

Tải bản đầy đủ (PDF)

(75 trang)