befaint
|||||||||||||
- Tham gia
- 6/1/11
- Bài viết
- 14,581
- Được thích
- 19,782
Bài 18. ArrayList
(Danh sách các bài viết về VBA xem ở đây Index - Các bài viết về VBA)
ArrayList là một thư viện nằm trong “System.Collections” của .NET Framework. Cho phép lưu trữ dữ liệu (items) có kích cỡ lớn, kích thước của mảng lưu trữ tự động tăng theo yêu cầu, cho phép truy xuất tới các items, sắp xếp các items đã nạp vào ArrayLis.
Yêu cầu: Hệ thống phải cài đặt .NET Framework v1.1 trở lên.
Nội dung chính gồm:
#1
1. Khai báo ArrayList
2. Các thuộc tính
2.1. Count
2.2. Capacity
2.3. Item
3. Các phương thức
3.1. Add
3.2. AddRange
3.3. Clear
3.4. Clone
#2
3.5. Contains
3.6. IndexOf
3.7. Insert
3.8. InsertRange
3.9. LastIndexOf
3.10. Remove
3.11. RemoveAt
3.12. RemoveRange
3.13. Reverse
3.14. Sort
3.15. ToArray
3.16. ToString
3.17. TrimToSize
#3
4. Ứng dụng
-----------------
1. Khai báo ArrayList
1.1. Kiểu khai báo sớm
(Không có Tooltip khi gọi ArrayList, phải thiết lập trong Tools/References)
- Trong cửa sổ VBA, Tools menu, References.
- Tìm và check vào mục “mscorlib.dll” trong cửa sổ References – VBAProject.
Khai báo trong code:
1.2. Kiểu khai báo muộn
(Không có Tooltip khi gọi ArrayList, không cần thiết lập trong Tools/References).
Khai báo trong code:
2. Các thuộc tính
2.1. Count
Trả về số lượng phần tử (Items) thực sự tồn tại trong ArrayList.
Ví dụ:
2.2. Capacity
Trả về số lượng các phần tử hoặc đặt (thiết lập) số lượng các phần tử mà ArrayList có thể lưu trữ.
+ Các lỗi xảy ra đặt số lượng các phần tử cho ArrayList:
- Khi giá trị của Capacity nhỏ hơn số lượng phần từ đã tồn tại trong ArrayList (count).
- Khi giá trị của Capacity trả về ArrayList có kích thước vượt dung lượng bộ nhớ có thể dùng của hệ thống (OutOfMemoryException).
+ Capacity luôn luôn lớn hơn hoặc bằng Count. Nếu Count vượt quá Capacity trong khi thêm các phần tử, Capacity sẽ tự động tăng lên bằng cách tái phân bổ lại mảng nội bộ trước khi sao chép các phần tử cũ và thêm các phần tử mới.
+ Có thể giảm Capacity bằng cách dùng phương thức TrimToSize hoặc bằng cách thiết lập giá trị Capacity cụ thể (nhưng phải đảm bảo >= Count, nếu không sẽ xảy ra lỗi). Khi giá trị của Capacity được xác định cụ thể, mảng nội bộ cũng được phân bổ lại để đáp ứng dung lượng đã xác định.
Ví dụ:
2.3. Item
Trả về giá trị của Item theo chỉ số (index) chỉ định trong ArrayList, hoặc gán giá trị mới cho Item theo chỉ số của Item đó.
Lưu ý: Chỉ số (index) của Item có giá trị từ 0 tới Count-1.
Ví dụ:
3. Các phương thức
3.1. Add
Thêm một Item vào vị trí cuối cùng (end) của ArrayList.
Item có thể là một trị đơn, hoặc một mảng (array).
Item nhận kiểu dữ liệu bất kỳ (kiểu số hoặc chuỗi), giá trị của Items có thể trùng nhau.
Chỉ số đầu tiên của Item trong ArrayList bằng 0, cho dù Option Base 1.
Ví dụ:
3.2. AddRange
Thêm một đối tượng ICollection vào vị trí cuối cùng của ArrayList.
Icollection: Có thể là Stack, Queue, Hashtable, SortList, ArrayList
Ví dụ:
3.3. Clear
Xóa toàn bộ các Items trong ArrayList.
Ví dụ:
3.4. Clone
Tạo một bản sao từ ArrayList đã có.
Ví dụ:
(Danh sách các bài viết về VBA xem ở đây Index - Các bài viết về VBA)
ArrayList là một thư viện nằm trong “System.Collections” của .NET Framework. Cho phép lưu trữ dữ liệu (items) có kích cỡ lớn, kích thước của mảng lưu trữ tự động tăng theo yêu cầu, cho phép truy xuất tới các items, sắp xếp các items đã nạp vào ArrayLis.
Yêu cầu: Hệ thống phải cài đặt .NET Framework v1.1 trở lên.
Nội dung chính gồm:
#1
1. Khai báo ArrayList
2. Các thuộc tính
2.1. Count
2.2. Capacity
2.3. Item
3. Các phương thức
3.1. Add
3.2. AddRange
3.3. Clear
3.4. Clone
#2
3.5. Contains
3.6. IndexOf
3.7. Insert
3.8. InsertRange
3.9. LastIndexOf
3.10. Remove
3.11. RemoveAt
3.12. RemoveRange
3.13. Reverse
3.14. Sort
3.15. ToArray
3.16. ToString
3.17. TrimToSize
#3
4. Ứng dụng
-----------------
1. Khai báo ArrayList
1.1. Kiểu khai báo sớm
(Không có Tooltip khi gọi ArrayList, phải thiết lập trong Tools/References)
- Trong cửa sổ VBA, Tools menu, References.
- Tìm và check vào mục “mscorlib.dll” trong cửa sổ References – VBAProject.
Khai báo trong code:
PHP:
Dim oArrList As New ArrayList
1.2. Kiểu khai báo muộn
(Không có Tooltip khi gọi ArrayList, không cần thiết lập trong Tools/References).
Khai báo trong code:
PHP:
Dim oArrList As Object
Set oArrList = CreateObject("System.Collections.ArrayList")
2. Các thuộc tính
2.1. Count
PHP:
oArrList.Count
Ví dụ:
PHP:
Sub CountProperty()
'oArrList.Count'
Dim oArrList As Object, i As Long, arr
Set oArrList = CreateObject("System.Collections.ArrayList")
arr = Array(20, 50)
For i = 1 To 5
oArrList.Add i
Next i
oArrList.Add arr
MsgBox oArrList.Count '6'
End Sub
2.2. Capacity
PHP:
oArrList.Capacity
+ Các lỗi xảy ra đặt số lượng các phần tử cho ArrayList:
- Khi giá trị của Capacity nhỏ hơn số lượng phần từ đã tồn tại trong ArrayList (count).
- Khi giá trị của Capacity trả về ArrayList có kích thước vượt dung lượng bộ nhớ có thể dùng của hệ thống (OutOfMemoryException).
+ Capacity luôn luôn lớn hơn hoặc bằng Count. Nếu Count vượt quá Capacity trong khi thêm các phần tử, Capacity sẽ tự động tăng lên bằng cách tái phân bổ lại mảng nội bộ trước khi sao chép các phần tử cũ và thêm các phần tử mới.
+ Có thể giảm Capacity bằng cách dùng phương thức TrimToSize hoặc bằng cách thiết lập giá trị Capacity cụ thể (nhưng phải đảm bảo >= Count, nếu không sẽ xảy ra lỗi). Khi giá trị của Capacity được xác định cụ thể, mảng nội bộ cũng được phân bổ lại để đáp ứng dung lượng đã xác định.
Ví dụ:
PHP:
Sub CapacityProperty()
'oArrList.Capacity'
Dim oArrList As Object, vCnt As Long, vCty As Long
Set oArrList = CreateObject("System.Collections.ArrayList")
For i = 1 To 5
oArrList.Add i
Next i
vCnt = oArrList.Count '5'
vCty = oArrList.Capacity '8'
oArrList.Capacity = 5
MsgBox oArrList.Capacity '5'
End Sub
2.3. Item
PHP:
oArrList.Item(Index)
Lưu ý: Chỉ số (index) của Item có giá trị từ 0 tới Count-1.
Ví dụ:
PHP:
Sub ItemProperty()
'oArrList.Item(Index) -FirstIndex = 0'
Dim oArrList As Object
Set oArrList = CreateObject("System.Collections.ArrayList")
For i = 1 To 5
oArrList.Add "Value-" & i
Next i
oArrList.Item(4) = 100
MsgBox oArrList.Item(0) 'Value-1'
MsgBox oArrList.Item(4) '100'
End Sub
3. Các phương thức
3.1. Add
PHP:
oArrayList.Add Item
Item có thể là một trị đơn, hoặc một mảng (array).
Item nhận kiểu dữ liệu bất kỳ (kiểu số hoặc chuỗi), giá trị của Items có thể trùng nhau.
Chỉ số đầu tiên của Item trong ArrayList bằng 0, cho dù Option Base 1.
Ví dụ:
PHP:
Sub AddMethod()
'oArrList.Add Item -Adds a item to the end of the ArrayList'
'Item: number, string, array'
'First index = 0'
Dim oArrList As Object
Set oArrList = CreateObject("System.Collections.ArrayList")
Dim Arr1, Arr2(1 To 2, 1 To 1), itemArr, itemList
Arr1 = Array(10, 12)
Arr2(1, 1) = 50
Arr2(2, 1) = "Example"
'Adds items to oArrList:'
oArrList.Add 20
oArrList.Add "TextA"
oArrList.Add Arr1
oArrList.Add Arr2
For Each itemList In oArrList
If IsArray(itemList) = True Then
For Each itemArr In itemList
MsgBox itemArr
Next itemArr
Else
MsgBox itemList
End If
Next itemList
'Result: 20, "TextA", 10, 12, 50 , "Example" '
End Sub
3.2. AddRange
PHP:
oArrList.AddRange ICollection
Icollection: Có thể là Stack, Queue, Hashtable, SortList, ArrayList
Ví dụ:
PHP:
Sub AddRangeMethod()
'Adds the elements of an ICollection to the end of the ArrayList.'
'oArrList.AddRange ICollection'
Dim oArrList As Object, ArList1 As Object, itemList
Set oArrList = CreateObject("System.Collections.ArrayList")
Set ArList1 = CreateObject("System.Collections.ArrayList")
ArList1.Add 10
ArList1.Add 20
oArrList.Addrange ArList1
For Each itemList In oArrList
MsgBox itemList
Next
'Result: 10, 20'
End Sub
3.3. Clear
PHP:
oArrayList.Clear
Ví dụ:
PHP:
Sub ClearMethod()
'oArrList.Clear'
Dim oArrList As Object, i As Long
Set oArrList = CreateObject("System.Collections.ArrayList")
For i = 1 To 5
oArrList.Add i
Next i
oArrList.Clear
MsgBox oArrList.Count '0'
End Sub
3.4. Clone
PHP:
oArrayList.Clone
Ví dụ:
PHP:
Sub CloneMethod()
'oArrList.Clone'
Dim oArrList As Object, i As Long, newArrList As Object
Set oArrList = CreateObject("System.Collections.ArrayList")
For i = 1 To 5
oArrList.Add i
Next i
Set newArrList = oArrList.Clone
MsgBox newArrList.Count '5'
End Sub
Lần chỉnh sửa cuối: