3. List: The Dart Array
3.2 Làm việc với List
Như đã thảo luận, List là một kiểu của đối tượng và nó có những phương thức cũng như thuộc tính cụ thể.
❖ Indexing
Vị trí của phần tử đầu tiên trong danh sách sẽ là 0.
Bởi vì mỗi phần tử đều có một vị trí riêng của nó cho nên một danh sách có thể chứa nhiều phần tử trùng nhau. Mặc dù trùng nhau nhưng chúng đều có ví trí khác nhau. Ví dụ như danh sách với 5 phần tử giống nhau bên dưới.
❖ Truy vấn một phần tử
Để truy vấn một phần tử tại một vị trí cụ thể chúng ta có thể sử dụng dấu ngoặc vuông [].
Syntax như sau:
Output: carrot
Trong ví dụ bên trên chúng ta truy vấn phần tử thứ hai của danh sách
listOfVegetables, phần tử có vị trí index là 1.
❖ Tính độ dài của list
Độ dài của danh sách đơn giản chỉ là số phần tử trong danh sách đó. Đê biết được độ dài của danh sách, chúng ta có thể truy cập thuộc tính length và sử dụng toán tử . để truy cập bất cứ thuộc tính nào mà ta muốn.
Syntax như sau:
Ví dụ:
Output: 3
❖ Thêm một phần tử đơn
Chúng ta thêm một phần tử mới vào danh sách hiện tai bằng cách sử dụng phương thức add. Điều này đúng khi và chỉ khi phần tử được thêm phải cùng kiểu với các phần tử đã có trong danh sách.
Phương thức add có một tham số duy nhất đó chính là phần tử bạn muốn thêm và danh sách. Kiểu của tham số phụ thuộc vào danh sách mà bạn dùng phương thức gọi vào. Syntax như sau:
Output: [potato,carrot,cucumber,cabbage] ❖ Thêm nhiều phần tử
Chúng ta có thể thêm nhiều một phần tử mới vào danh sách hiện tại bằng cách sử dụng phương thức addAll. Tương tự, điều kiện, duy nhất là phần tử thêm phải cùng kiểu với các phần tử đã có trong danh sách.
addAll cơ bản là gộp các phần tử của hai sách lại thành một.
Syntax như sau:
Output:
[potato, carrot, cucumber, cabbage, broccoli, zucchini] [potato, carrot, cucumber, cabbage, broccoli, zucchini, okra, capsicum]
❖ Xóa một phần tử đơn
Để xóa một phần tử từ danh sách hiện tai, chúng ta có thể sử dụng phương thức
removeAt. Phương thức removeAt có một tham số duy nhất đó chính là phần tử bạn
muốn xóa khỏi danh sách. Kiểu tham số đó là int. Syntax sẽ như sau:
Output:
[carrot, cucumber, cabbage, broccoli, zucchini] [carrot, cucumber, broccoli, zucchini]
Nếu bạn muốn xóa một phần tử nhưng không biết số thứ tự của nó thì hãy sử dụng phương thức indexOf mà chúng ta đã thảo luận ở trên.
Ví dụ:
Output: [cucumber, zucchini]
❖ Xóa tất cả các phần tử
Để xóa tất cả các phần tử khởi tạo danh sách, chúng ta chỉ cần gọi phương thức clear.
Một phương thức không có tham số khởi tạo nào cả Ví dụ:
Output: []
❖ Phương thức map()
Kiểu List có một phương thức được biết là map(), nó khác với collection Map.
map() map tất cả các phần tử của list vào một biểu thức hoặc câu lệnh. Ví dụ chúng ta
có thể có một danh sách các số nguyên và chúng ta muốn tính bình phương của mỗi số nguyên trong danh sách. map() của List được sử dụng để giải quyết những vấn đề như vậy.
Syntax như sau:
Iterator có thể là bất cứ cái tên nào. Nó cơ bản là một kiểu biến lấy giá trị của từng
phần tử trong danh sách. Iterator bắt đầu lấy phần tử đầu tiên trong danh sách và sau đó sẽ áp dụng phần tử đó vào câu lệnh. Tương tự như vây cho đến khi không còn phần tử nào để lấy nữa.
Trong ví dụ bên dưới, chúng ta có danh sách các loại rau và chúng ta sẽ in từ “I love vegetable”. Trong đó từ “vegetables” sẽ được thay thế bằng từng phần tử trong list.
Output: (I love carrot, I love cucumber, I love zucchini)
Để chuyển đổi kết quả của map() thành một danh sách chúng ta có thể dùng phương thức toList()
Hãy điều chỉnh đoạn code bên trên:
Output: [I love carrot, I love cucumber, I love zucchini] 4. Cấu trúc dữ liệu set
Trong ngôn ngữ Dart, một set là một tập hợp không theo thứ tự của các phần tử riêng biệt. Điều này có nghĩa là các phần tử đó sẽ không có một vị trí cụ thể ở trong Set. Do đó, một set sẽ không thể tạo ra các bản sao của cùng một phần tử.