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

nền tảng lập trình c bài 8 collection và generics

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 (494 KB, 75 trang )

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
1
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Bài 8: Collection và Generics
• Collections

Th tá ớiáđốit dháhtầ t

Th
ao

c v
ới
c
á
c
đối

t
ượng
d
an
h
s
á
c
h

t


u

n
t

• Dictionaries
• Các collection chuyên biệt hóa (Specialized
Collections)

Generic
Generic
• Generic Collections
2
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Collections (tập hợp) là các lớp hỗ trợ thu thập và
quản lý các đối tượng
− Một cách có thứ tự
− Hỗ trợ lưu, tìm kiếm và duyệt các đối tượng trong tập hợp
• Namespace System.Collections của .NET Framework
cung cấp nhiều kiểu tập hợp khác nhau

Cần dùng collection nào trong từng trường hợpcụ thể ?
Cần

dùng

collection


nào

trong

từng

trường

hợp

cụ

thể

?
3
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Các kiểu collection thông dụng
− ArrayList
− SortedList
− Queue
− Stack

Hashtable
Hashtable
− StringCollection

StringDictionary

4
StringDictionary
− ListDictionary
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Thêm và xóa phần tử

LớpArrayListlàlớpcơ bảnnhấtnằm ẩn bên trong tất
Lớp

ArrayList



lớp



bản

nhất
,
nằm

ẩn

bên

trong


tất

cả các lớp còn lại.
− Thêm và xóa
p
hần tử khỏi Arra
y
List rất đơn
g
iản.
p y g
− ArrayList cung cấp 2 phương thức để thêm phần tử:
• Add
• AddRange
5
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Thêm phần tử :

Thêm phầntử dùng phương thứcAdd
Thêm

phần

tử

dùng


phương

thức

Add
string s=

Hello

;
ArrayList coll=new ArrayList();
X
coll
coll
string

s= Hello ;
coll.Add(s);
coll.Add(“Hi”);
ll
Add
(0)
“Hello”
“Hi”
50
0
1
2
Nhiềukiểudữ liệukhác
co

ll
.
Add
(
5
0)
;
coll.Add(new object());
50
object
2
3
6
Nhiều

kiểu

dữ

liệu

khác

nhau có thể được lưu
trong ArrayList
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Thêm phần tử


ArrayList hỗ trợ phương thức : AddRange để thêm 1
ArrayList

hỗ

trợ

phương

thức

:

AddRange

để

thêm

1

dãy các phần tử
• Từ một array/ collection khác.
Add và AddRange
thêm
p
hần tử vào
ArrayList coll=new ArrayList();
string[] anArray=new string[]{“more”,”or”,”less”};
p

cuối dãy.
coll.AddRange(anArray);
object[] anotherArray=new object[]{new object(),new
Arra
y
List
()};
7
y ()};
coll.AddRange(anArray);
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Thêm phần tử

ArrayList cung cấpphương thức Insert và InsertRange
ArrayList

cung

cấp

phương

thức

Insert




InsertRange

hỗ trợ thêm phần tử vào 1 vị trí xác định
ArrayList coll = new ArrayList();
coll.Insert(1, "Hey all");
string[] moreString = new string[] {"good night","see you"};
ll
ItR
(
3
St i )
Kếtquả
co
ll
.
I
nser
tR
ange
(
3
, more
St
r
i
ng
)
;
for (int i = 0; i < coll.Count; i++){
Console.WriteLine(

"
Item
"+
i
+"
:
"+
coll[i]);
Kết

quả

là gì ?
8
Console.WriteLine( Item

i

:

coll[i]);
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Thêm phần tử

ArrayList hỗ trợ gán giá trị cho đốitượng trong
ArrayList


hỗ

trợ

gán

giá

trị

cho

đối

tượng

trong

collection thông qua index của đối tượng
coll[3]=“du lieu”;
• Chỉ gán giá trị/ ghi đè giá trị cũ
• Khôn
g
thêm mới
p
hần t

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

TRUNG TÂM TIN HỌC
Collections
• Xóa phần tử

ArrayList hỗ trợ các phương thức xóa phầntử khỏi
ArrayList

hỗ

trợ

các

phương

thức

xóa

phần

tử

khỏi

collection
• Remove
• RemoveAt
• RemoveRange
10

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Xóa phần tử
//
óhầ tử dù R
//
x
ó
a p
hầ
n
tử


ng
R
emove
coll.Add(“du lieu”);
coll.
Remove
(

du lieu

);
Remove
coll.
Remove
(du


lieu );
// xóa phần tử dùng RemoveAt
coll.RemoveAt(0);
//
óhầ tử dù R R
RemoveAt
//
x
ó
a p
hầ
n
tử


ng
R
emove
R
ange
coll.RemoveRange(0,4);
RemoveRange
11
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
ỗ ầ
• Phương thức h


trợ thêm/ xóa ph

n t

− Clear
− IndexOf
− Contains
string myString=“My String”;
if (coll.Contains(myString)){
int index=coll
IndexOf
(myString);
int

index=coll
.
IndexOf
(myString);
coll.RemoveAt(index);
}
12
else
coll.Clear();
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Duyệt các phần tử

ArrayList hỗ trợ nhiều cách duyệt các phầntử trong
ArrayList


hỗ

trợ

nhiều

cách

duyệt

các

phần

tử

trong

collection
• Dùng chỉ mục phần tử (index)
• Dùng interface IEnumerable và Enumerator
• Dùng cấu trúc foreach
13
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections

D ệtá hầ tử


D
uy
ệt
c
á
c p
hầ
n
tử
for (int i=0;i<coll.Count;i++){
Chỉ mục
Console.WriteLine(coll[i]);
}
IEnumerator e
=
coll.GetEnumerator();
bl
IEnumerator

e coll.GetEnumerator();
while(e.MoveNext()){
Console.WriteLine(e.Current);
IEnumera
bl
e
}
foreach (object item in coll){
Console WriteLine(item);
foreach
14

Console
.
WriteLine(item);
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Collections
• Sắp xếp phần tử

ArrayList hỗ trợ phương thứcSortđể sắpxếpcác
ArrayList

hỗ

trợ

phương

thức

Sort

để

sắp

xếp

các


phần tử trong collection.
coll.Sort();
• Phương thức Sort dùng lớp Comparer thực hiện so sánh
• Comparer thực thi interface IComparer
• Phương thức Sort cho phép chỉ định đối tượng IComparer
thay cho đối tượng mặc định
coll.Sort
(
new CaseInsentitiveCom
p
arer
());
15
(
p
());
• Có thể tự tạo Comparer nếu có nhu cầu
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Danh sách tuần tự
• Danh sách tuần tự

Là một collection


một

collection
− Chỉ cho phép truy xuất tuần tự từng phần tử


Mỗilầnchỉ truy xuất1phầntử

Mỗi

lần

chỉ

truy

xuất

1

phần

tử
16
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Danh sách tuần tự
• Queue

Stack

Stack
17
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Danh sách tuần tự


Q
ueue
Q
− Là danh sách tuần tự hỗ trợ truy xuất phần tử tuần tự
theo mô hình first-in, first-out (FIFO)
• Thêm phần tử vào cuối danh sách
• Lấy phần tử đầu ra khỏi danh sách

− Một s

thuộc tính và phương thức quan trọng
• Thuộc tính
––
CountCount
––
CountCount
• Phương thức
–– EnQueueEnQueue
18
–– DeQueueDeQueue
–– PeekPeek
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Danh sách tuần tự
• Thêm/ xóa phần tử
QQ()
X
q
Q

ueue q=new
Q
ueue
()
;
q.EnQueue(“Item 1”);
X
Item 1
q
q
q.EnQueue(“Item 2”);
q.EnQueue(“Item 3”);
Console.WriteLine(q.DeQueue());
Item 2
Item 3
q
Console.WriteLine(q.DeQueue());
Item 1
Item 2
19
Item

2
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Danh sách tuần tự
• Tìm phần tử

Duyệt Queue
Duyệt


Queue
− Dùng DeQueue lấy ra và so sánhÆphần tử không còn
tron
g
Queue
g
− Tìm phần tử mà không lấy nó ra khỏi Queue: dùng
phương thức Peek
if (q.Peek() is String){
Console.WriteLine(q.DeQueue());
20
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Danh sách tuần tự
• Stack
− Là danh sách tuần tự hỗ trợ truy xuất phần tử theo mô
hình last
in first
out (LIFO)
hình

last
-
in
,
first
-
out


(LIFO)
.
• Thêm phẩn tử vào cuối danh sách
• Lấ
y

p
hần tử cuối ra khỏi danh sách
yp
− Một số thuộc tính và phương thức quan trọng
• Thuộc tính
–– CountCount
• Phương thức
––PopPop
21
––PushPush
–– PeekPeek
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Danh sách tuần tự
• Thêm/ xóa phần tử
St k St k()
X
s
St
ac
k
s=new
St

ac
k()
;
s.Push(“Item 1”);
X
Item 1
s
s
s.Push(“Item 2”);
s.Push(“Item 3”);
Console.WriteLine(s.Pop());
ClWitLi(
P
())
Item 2Item 3
C
onso
l
e.
W
r
it
e
Li
ne
(
s.
P
op
())

;
Item 2
Item 3
22
Item

3
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Danh sách tuần tự
• Tìm phần tử

DuyệtStack
Duyệt

Stack
− Dùng Pop lấy ra và so sánhÆphần tử không còn trong
Stack
− Tìm phần tử mà không lấy nó ra khỏi Stack: dùng
phương thức Peek
if (s.Peek() is String){
Console.WriteLine(s.Pop());
23
}
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Dictionaries
• Tập hợp lưu các phần tử có thứ tự theo từng
c
ặp

ke
y
/ value
ặpy
• Cho phép tìm kiếm phần tử theo key
24
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
TRUNG TÂM TIN HỌC
Dictionaries
• HashTable

SortedList

SortedList
• ListDictionary
• HybirdDictionary
• OrderedDictionar
y
y
25

×