Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT

24
Bài 4: ARRAY VÀ ARRAYLIST

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ệnh

Transcript of Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT

Page 1: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT

Bài 4:ARRAY VÀ ARRAYLIST

Page 2: Bài 4: ARRAY VÀ ARRAYLIST - Giáo trình FPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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