bài 4: array vÀ arraylist - giáo trình fpt
DESCRIPTION
Tìm hiểu về cách sử dụng mảng thông thường trong VB.Net Tìm hiểu về lớp ArrayList và cách sử dụng trong VB.Net So sánh mảng thông thường và ArrayList Áp dụng việc đo thời gian thực hiện lệnhTRANSCRIPT
![Page 1: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/1.jpg)
Bài 4:ARRAY VÀ ARRAYLIST
![Page 2: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/2.jpg)
Tìm hiểu về Collection trong VB.Net:
Khái niệm Collection
Phân loại các Collection
Lớp Collection trong VB.Net
Lớp CollectionBase trong VB.Net
Nhắc lại bài cũ
Slide 4 - Array và ArrayList 2
![Page 3: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/3.jpg)
Tìm hiểu về cách sử dụng mảng thông thường trong
VB.Net
Tìm hiểu về lớp ArrayList và cách sử dụng trong VB.Net
So sánh mảng thông thường và ArrayList
Áp dụng việc đo thời gian thực hiện lệnh
Mục tiêu bài học hôm nay
Slide 4 - Array và ArrayList 3
![Page 4: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/4.jpg)
Cấu trúc dữ liệu mảng:
Là cấu trúc lưu trữ tập hợp các phần tử cùng kiểu được sắp xếp
thứ tự truy cập theo chỉ số (index)
Chỉ số của mảng bắt đầu từ 0.
Kích thước của mảng được cấp phát từ khi khai báo mảng
Trong VB.Net, mảng là một đối tượng của lớp Array
Khái niệm mảng
Slide 4 - Array và ArrayList 4
![Page 5: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/5.jpg)
Có hai cách:
Cách 1: Khai báo và khởi tạo tách riêng
//khai báo biến
Dim Tênmảng([số phần tử]) As Kiểu
//tạo mảng và trỏ biến tham chiếu đến mảng
Tênmảng = New Kiểu() {giá trị phần tử 1, giá trị phần tử 2,…}
Cách 2: Khai báo và khởi tạo đồng thời
Dim Tênmảng([số phần tử]) As Kiểu = {giá trị phần tử 1, giá trị
phần tử 2,…}
Khai báo và khởi tạo mảng
Slide 4 - Array và ArrayList 5
![Page 6: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/6.jpg)
Ví dụ: khai báo một mảng số nguyên
Cách 1:
Cách 2:
Khai báo và khởi tạo mảng
Slide 4 - Array và ArrayList 6
Dim numbers() As String
numbers = New Integer() {10, 20, 30, 40, 50}
Dim numbers() As Integer = {10, 20, 30, 40,
50}
![Page 7: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/7.jpg)
Thiết lập bằng phương thức SetValue
Ví dụ: numbers.SetValue(1, “222”)
-> numbers = {10, 222, 30, 40, 50}
Truy cập phần tử của mảng:
Thông qua chỉ số index
Ví dụ: num = numbers(1) -> giá trị của num là 222
Thông qua phương thức GetValue(index)
Ví dụ: num2 = numbers.GetValue(2) -> giá trị của num2 là 30
Thiết lập giá trị và truy cậpcác phần tử của mảng
Slide 4 - Array và ArrayList 7
![Page 8: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/8.jpg)
Length(): trả về số phần tử trong tất cả các chiều của Array
GetLength(): trả về số phần tử của một chiều được chỉ định của
mảng
Rank(): trả về số lượng kích thước của Array
GetType(): trả về kiểu của phần tử hiện thời trong Array
IsArray(a): trả về True nếu a là mảng thật sự, ngược lại trả về
False
Các phương thức và thuộc tính của mảng
Slide 4 - Array và ArrayList 8
![Page 9: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/9.jpg)
Dùng lệnh ReDim: cho phép thay đổi lại kích thước của
Array và giá trị của các phần tử đều được thiết lập lại là
giá trị mặc định.
Ví dụ:
Dim grades() As Integer = {87, 76, 99, 65, 89}
ReDim grades(9)
-> Mảng grades lúc này có kích thước là 10 phần tử, và giá trị các
phần tử là 0.
Thay đổi tự động kích thước của mảng
Slide 4 - Array và ArrayList 9
![Page 10: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/10.jpg)
Dùng lệnh Preserve: Nếu muốn giữ nguyên giá trị các
phần tử trong mảng, sử dụng lệnh Preserve đi kèm lệnh
ReDim.
Ví dụ:
ReDim Preserve grades(9)
-> Mảng grades lúc này có kích thước là 10 phần tử, và giá trị 5
phần tử ban đầu vẫn giữ nguyên.
Thay đổi tự động kích thước của mảng
Slide 4 - Array và ArrayList 10
![Page 11: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/11.jpg)
Trong VB.Net, mảng có kích thước tối đa là 32 chiều.
Thường sử dụng đến mảng kích thước 2 chiều.
Khai báo mảng 2 chiều:
Ví dụ:
Khai báo mảng số nguyên hai chiều
Dim IntArray( , ) As Integer
Mảng đa chiều
Slide 4 - Array và ArrayList 11
![Page 12: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/12.jpg)
Ví dụ:
Khai báo và khởi tạo mảng kích thước 2x3
Dim intArray(2,3) As Integer
intArray(2,3) = New Integer() {{5, 15, 25}, {10, 20, 30}}
Mảng đa chiều
Slide 4 - Array và ArrayList 12
![Page 13: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/13.jpg)
Hai cách truy cập các phần tử của mảng:
Thông qua các chỉ số của phần tử
Ví dụ: intArray(0, 1) 15
Thông qua phương thức GetValue()
Ví dụ: IntArray.GetValue(0, 1) 15
Mảng đa chiều
Slide 4 - Array và ArrayList 13
![Page 14: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/14.jpg)
Là một cấu trúc dữ liệu kiểu mảng được cài đặt trong
VB.Net với tên ArrayList
Tính chất:
ArrayList cung cấp khả năng tăng kích thước mảng tự động
Các phần tử lưu trong ArrayList được định kiểu là Object.
ArrayList
Slide 4 - Array và ArrayList 14
![Page 15: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/15.jpg)
Thuộc tính Capacity của lớp ArrayList:
Dùng để lưu kích thước của mảng.
Giá trị khởi tạo của Capacity = 16.
Khi số lượng phần tử của mảng vượt quá 16, Capacity tự động
thêm 16 phần tử vào trong không gian lưu trữ của mảng.
ArrayList
Slide 4 - Array và ArrayList 15
![Page 16: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/16.jpg)
Add()AddRange()CapacityClear()Contains()CopyTo()CountGetEnumerator()GetRange()IndexOf()
Các phương thức và thuộc tínhcủa lớp ArrayList
Slide 4 - Array và ArrayList 16
![Page 17: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/17.jpg)
Insert()
InsertRange()
Item()
Remove()
RemoveAt()
Reverse()
Sort()
ToArray()
TrimToSize()
Slide 4 - Array và ArrayList 17
Các phương thức và thuộc tínhcủa lớp ArrayList
![Page 18: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/18.jpg)
Ví dụ về sử dụng lớp ArrayList
Sử dụng lớp ArrayList
Slide 4 - Array và ArrayList 18
' Khai báo 1 ArrayList
Dim grades As New ArrayList()
Dim i As Integer
' thêm các phần tử vào ArrayListgrades.Add(10) grades.Add(20) grades.Add(30)
'position lưu trữ vị trí của phần tử thêm vào bởi pthức AddDim position As Integer
position = grades.Add(40)
position = position + 1
Console.WriteLine("Phan tu 40 duoc them vao tai vi tri thu " & position)
' Hien thi noi dung ArrayList
Console.WriteLine("Noi dung mang grades la: ")
For i = 0 To grades.Count - 1
Console.WriteLine(grades.Item(i))
Next
'Thêm phần tử có giá trị 99 vào ArrayList tại vị trí số 2grades.Insert(1, 99)
' Hien thi noi dung ArrayList
Console.WriteLine("Noi dung grades sau khi them phan tu 99 vao vi tri thu 2 la: ")
For i = 0 To grades.Count - 1
Console.WriteLine(grades.Item(i))
Next
![Page 19: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/19.jpg)
Chương trình cho kết quả:
Sử dụng lớp ArrayList
Slide 4 - Array và ArrayList 19
![Page 20: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/20.jpg)
Sử dụng lớp ArrayList
Slide 4 - Array và ArrayList 20
' Xóa phần tử có giá trị 54 khỏi ArrayList dùng Remove
If (grades.Contains(54)) Then
grades.Remove(54)
Else
Console.WriteLine("Phan tu nay khong ton tai trong ArrayList.")
End If
'Xóa phần tử thứ 3 khỏi ArrayList dùng RemoveAt
grades.RemoveAt(2)
'Xóa phần tử khỏi danh sách dùng IndexOf kết hợp với RemoveAt
Dim pos As Integer
pos = grades.IndexOf(99)
grades.RemoveAt(pos)
' Kiểm tra dung lượng hiện tại của ArrayList
Console.WriteLine("Dung luong hien tai cua mang grades la:" &
grades.Capacity)
Console.WriteLine("So phan tu co trong mang la:" & grades.Count)
Console.WriteLine("Noi dung grades bay gio la: ")
For i = 0 To grades.Count - 1
Console.WriteLine(grades.Item(i))
Next
Console.ReadLine()
![Page 21: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/21.jpg)
Lúc này chương trình cho kết quả:
Sử dụng lớp ArrayList
Slide 4 - Array và ArrayList 21
![Page 22: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/22.jpg)
Xem ví dụ SGK so sánh thời gian khi sử dụng mảng
thông thường và ArrayList để tính tổng của 100.000
phần tử.
Kết quả chỉ ra rằng nên sử dụng mảng thông thường khi
tính toán với số lượng phần tử lớn.
So sánh Array và ArrayList
Slide 4 - Array và ArrayList 22
![Page 23: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/23.jpg)
So sánh thời gian khi sử dụng mảng thông thường và
ArrayList để thêm phần tử vào mảng đã đầy.
Kết quả chỉ ra rằng nên sử dụng ArrayList khi chương
trình cần các thao tác như thêm, xóa phần tử trong
mảng
So sánh Array và ArrayList
Slide 4 - Array và ArrayList 23
![Page 24: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT](https://reader036.vdocuments.site/reader036/viewer/2022081717/5563a579d8b42aae0d8b4e60/html5/thumbnails/24.jpg)
Trong lập trình, mảng là CTDL hay được dùng nhất
Mảng trong VB.Net cũng là một đối tượng
Cả Array và ArrayList đều cho phép thay đổi kích thước
mảng
Dùng mảng thông thường cho bài toán tính toán trên dữ
liệu dạng số.
Dùng cấu trúc ArrayList để xây dựng mảng cho các bài
toán thêm phần tử vào mảng và kiểu dữ liệu không phải
là số.
Tổng kết
Slide 4 - Array và ArrayList 24