Bài tập về ArrayList

ArrayList là một class implement từ interface List và dựa trên Array data structure. ArrayList được sử dụng rất nhiều trong java bởi các chức năng và tính linh hoạt của nó.

ArrayListlà một mảng động có thể thay đổi cách thích tuỳ thuộc vào số lượng phần tử được thêm vào hoặc xoá đi.

Sơ đồ thừa kế

Sử dụng Array hay ArrayList?

Array là một mảng các số lượng phần tử cố định, nghĩa rằng bạn sẽ không thể thêm bất kỳ phần tử nào vào Array nếu nó đã chứa đầy phần tử. Mặc khác, nếu bạn xoá một phần tử trong Array vẫn sẽ không co lại và vẫn tốn một lượng memory như vậy.

ArrayList là một mảng các các phần tử linh động, nó có thể tăng hoặc giảm kích thước khi bạn thêm hoặc xoá các phần tử trong mảng. Ngoài ra nó còn cung cấp các method giúp chúng ta dễ dàng thao tác với mảng phần tử hơn.

Các bạn hãy tưởng tượng nếu cần thêm hoặc xoá một phần tử tại vị trí index trong Array, thì chúng ta sẽ có nhiều việc để làm lắm đấy. Và tưởng tượng các bạn sẽ phải lặp đi lặp lại các bước như vậy khi cần thao tác với mảng thì thật là khó chịu đúng không nào?

Minh hoạ thêm phần tử

Minh hoạ xoá phần tử


Khởi tạo một ArrayList

// Cách 1 ArrayList = new ArrayList[]; // Cách 2 List = new ArrayList[];

Kiểu dữ liệu dùng để xác định các thành phần có thể có trong ArrayList.Ví dụ

List strings = new ArrayList[];

Chúng ta sẽ một ArrayList với các phần tử có kiểu String.

Note: Các kiểu dữ liệu nguyên thuỷkhông được phép trong ArrayList.

List arrs = new ArrayList[]; => Error

Thêm phần tử vào ArrayList

Để thêm một phần tử vào một ArrayListchúng ta sử dụng method add[].

// add the element at the end ArrrayList strs.add["deftBlog"]; // add the element at specified index strs.add[5, "milo"];

Ví dụ

import java.util.*; public class Main { public static void main[String[] args] { List strs = new ArrayList[]; strs.add["str 0"]; strs.add["str 1"]; strs.add["str 2"]; strs.add["str 3"]; System.out.println[strs]; strs.add[2, "deft"]; System.out.println[strs]; } }

Output

[str 0, str 1, str 2, str 3]
[str 0, str 1, deft, str 2, str 3]

Xoá phần tử trong ArrayList

import java.util.*; public class Main { public static void main[String[] args] { List strs = new ArrayList[]; strs.add["str 0"]; strs.add["str 1"]; strs.add["str 2"]; strs.add["str 3"]; System.out.println[strs]; // remove by value strs.remove["str 0"]; System.out.println[strs]; // remove by index strs.remove[2]; System.out.println[strs]; } }

output

[str 0, str 1, str 2, str 3]
[str 1, str 2, str 3]
[str 1, str 2]

Duyệt các phần tử trong ArrayList

Để duyệt các phần tử trong ArrayList chúng ta có 3 cách chính:

  • Vòng lặp For
  • Vòng lặp for rút gọn
  • ForEach

Sau đây, chúng ta cần đi qua từng cách để xem cú pháp và cách sử dụng của chúng.

Array For

Đây có lẽ là cách quen thuộc tính nhất đối với các bạn mới bắt đầu học Java. Vì cú pháp này các bạn đã được tiếp xúc ngay từ đầu học Java,

import java.util.*; public class Main { public static void main[String args[]] { ArrayList alist = new ArrayList[]; alist.add["Gregor Clegane"]; alist.add["Khal Drogo"]; alist.add["Cersei Lannister"]; alist.add["Sandor Clegane"]; alist.add["Tyrion Lannister"]; for[int i = 0; i < alist.size[]; i++] { System.out.println[alist.get[i]]; } } }

Output

Gregor Clegane Khal Drogo Cersei Lannister Sandor Clegane Tyrion Lannister

ArrayList For rút gọn

Tuy nhiên, các bạn có thể thấy rằng, việc phải khai báo biến i để giữ Index trong ArrayList là điều không cần thiết. Do vậy

import java.util.*; public class Main { public static void main[String args[]] { ArrayList alist = new ArrayList[]; alist.add["Gregor Clegane"]; alist.add["Khal Drogo"]; alist.add["Cersei Lannister"]; alist.add["Sandor Clegane"]; alist.add["Tyrion Lannister"]; //iterating ArrayList for [String str : alist] { System.out.println[str]; } } }

ArrayList ForEach

Ngoài ra thì ArrayList cũng cung cấp forEach method cho phép duyệt các phần tử.

import java.util.*; public class Main { public static void main[String args[]] { ArrayList alist = new ArrayList[]; alist.add["Gregor Clegane"]; alist.add["Khal Drogo"]; alist.add["Cersei Lannister"]; alist.add["Sandor Clegane"]; alist.add["Tyrion Lannister"]; alist.forEach[str -> System.out.println[str]]; } }

Các method trong ArrayList

Chúng ta đã tìm hiểu sơ cách ArrayList hoạt động. Ngoài các method cho phép thêm và xoá phần tử thì ArrayList còn cung cấp những method khác giúp cho việc lập trình chúng ta trở nên dễ dàng hơn. Hãy Xem qua và nhớ những method này giải giải quyết cho chúng ta vấn đề gì, chứ không cần học thuộc lòng vì IDE hiện giờ đều có các chức năng gợi ý cho bạn.

1, booleanadd[Object o]: Thêm một phần tử vào ArrayList

obj.add["deft"];

2, booleanadd[int index, Object o]: Thêm một phần tử vào vị trí index. Nếu index không hợp lệ chúng ta sẽ nhận lại một IndexOutOfBoundsException.

obj.add[2, "deft"];

3, boolean remove[Object o]: Xoá object o khỏi ArrayList, object o này phải chứa trong ArrayList.

obj.remove["deft"];

4, boolean remove[int index]: Xoá một phần tử tại vị trí index, nếu index không hợp lệ chúng ta sẽ nhận IndexOutOfBoundsException.

obj.remove[3];

5, Object set[int index, Object o]: Cập nhật phần tử tại vị trí index, nếu index không hợp lệ chúng ta sẽ nhận IndexOutOfBoundsException.

obj.set[3, "update"];

6, int indexOf[Object o]: Lấy vị trí index của object o trong ArrayList, nếu object o không chứa trong ArrayList nhận kết -1.

int pos = obj.indexOf["deft];

7, Object get[int index]: Return object tại vị trí index trong ArrayList.

String str = obj.get[3];

8, int size[]: lấy số lượng phần tử chứa trong ArrayList

int size = obj.size[];

9, boolean contains[Object o]: Kiểm tra phần tử object o có chứa trong ArrayList, nếu có return true, ngược lại false.

boolean isExist = obj.contains["deft"];

10, void clear[]: Xoá tất cả các phần tử trong ArrayList

obj.clear[];

11, int lastIndexOf[]: Lấy vị trí xuất hiện cuối cùng của phần tử.

Danh sách các bài viết về ArrayList

ArrayList cơ bản

  • Giới thiệu ArrayList
  • Khởi tại ArrayList
  • Vòng lặp trong ArrayList
  • Tìm độ dài của ArrayList
  • Add phần tử vào ArrayList
  • Remove phần tử khỏi ArrayList
  • Clear các phần tử trong ArrayList
  • Replace trong ArrayList
  • Convert array sang ArrayList

ArrayList sorting

  • Hiểu về ArrayList sortingvà Comparator
  • Sort tăng và giảm dần trong ArrayList
  • Sắp xếp nâng cao trong ArrayList
  • Sort ArrayList chứa các phần tử null

ArrayList searching

  • Lấy list con trong ArrayList
  • Tìm vị trí đầu tiên và cuối cùng của phần tử trong ArrayList
  • Lấy phần tử trong ArrayList
  • Kiểm tra sự tồn tại của phần tử trong ArrayList

ArrayList with Stream API

  • Sort ArrayList với Stream API
  • Search ArrayList với Stream API
  • Map ArrayList với Stream API
  • FlatMap ArrayList với Stream API

Nguồn tham khảo

//www.geeksforgeeks.org/arraylist-in-java/

ArrayList in java with example programs Collections Framework

Prev Article
Next Article

Video liên quan

Chủ Đề