befaint
|||||||||||||
- Tham gia
- 6/1/11
- Bài viết
- 14,599
- Được thích
- 19,830
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 ArrayList1.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.CountVí 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 Sub2.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 Sub2.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 Sub3. Các phương thức
3.1. Add
		PHP:
		
	
	oArrayList.Add ItemItem 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 Sub3.2. AddRange
		PHP:
		
	
	oArrList.AddRange ICollectionIcollection: 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 Sub3.3. Clear
		PHP:
		
	
	oArrayList.ClearVí 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 Sub3.4. Clone
		PHP:
		
	
	oArrayList.CloneVí 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: 
			
		
	
								
								
									
	
								
							
							 
	 
	  
 
 
		

 
 
		
 
 
		 
 
		 
 
		 
 
		
 
 
		