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

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

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 (515.24 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

×