Lớp ArrayList trong java
Lớp ArrayList trong java được sử dụng như một mảng động để lưu trữ các phần tử. Nó kế thừa lớp AbstractList và impliments giao tiếp List.
Những điểm cần ghi nhớ về ArrayList:
- Lớp ArrayList trong java có thể chứa các phần tử trùng lặp.
- Lớp ArrayList duy trì thứ tự của phần tử được thêm vào.
- Lớp ArrayList là không đồng bộ (non-synchronized).
- Lớp ArrayList cho phép truy cập ngẫu nhiên vì nó lưu dữ liệu theo chỉ mục.
- Lớp ArrayList trong java, thao tác chậm vì cần nhiều sự dịch chuyển nếu bất kỳ phần tử nào bị xoá khỏi danh sách.
Hierarchy của lớp ArrayList trong java

Khai báo lớp ArrayList
Lớp java.util.ArrayList được khai báo như sau:
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable
Các constructor của lớp ArrayList
Constructor | Mô tả |
---|---|
ArrayList() | Nó được sử dụng để khởi tạo một danh sách mảng trống. |
ArrayList(Collection c) | Nó được sử dụng để xây dựng một danh sách mảng được khởi tạo với các phần tử của collection c. |
ArrayList(int capacity) | Nó được sử dụng để xây dựng một danh sách mảng mà có dung lượng ban đầu được chỉ định. |
Các phương thức của lớp ArrayList
Phương thức | Mô tả |
---|---|
boolean add(Object o) | Nó được sử dụng để nối thêm phần tử được chỉ định vào cuối một danh sách. |
void add(int index, Object element) | Nó được sử dụng để chèn các phần tử được chỉ định tại các chỉ số vị trí quy định trong một danh sách. |
boolean addAll(Collection c) | Nó được sử dụng để nối tất cả các phần tử trong collection được chỉ định vào cuối của danh sách này, theo thứ tự chúng được trả về bởi bộ lặp iterator. |
boolean addAll(int index, Collection c) | Nó được sử dụng để chèn tất cả các phần tử trong collection được chỉ định vào danh sách này, bắt đầu từ vị trí đã chỉ định. |
void retainAll(Collection c) | Nó được sử dụng để xóa những phần tử không thuộc collection c và không thuộc list hiện tại khỏi list hiện tại. |
void removeAll(Collection c) | Nó được sử dụng để xóa những phần tử thuộc collection c và thuộc list hiện tại khỏi list hiện tại. |
int indexOf(Object o) | Nó được sử dụng để trả về chỉ mục trong danh sách với sự xuất hiện đầu tiên của phần tử được chỉ định, hoặc -1 nếu danh sách không chứa phần tử này. |
int lastIndexOf(Object o) | Nó được sử dụng để trả về chỉ mục trong danh sách với sự xuất hiện cuối cùng của phần tử được chỉ định, hoặc -1 nếu danh sách không chứa phần tử này. |
Object[] toArray() | Nó được sử dụng để trả về một mảng chứa tất cả các phần tử trong danh sách này theo đúng thứ tự. |
Object[] toArray(Object[] a) | Nó được sử dụng để trả về một mảng chứa tất cả các phần tử trong danh sách này theo đúng thứ tự. |
Object clone() | Nó được sử dụng để trả về một bản sao của ArrayList. |
void clear() | Nó được sử dụng để xóa tất cả các phần tử từ danh sách này. |
void trimToSize() | Nó được sử dụng để cắt dung lượng của thể hiện ArrayList này là kích thước danh sách hiện tại. |
Khởi tạo ArrayList trong java
Có 2 kiểu khởi tạo ArrayList, đó là non-generic và generic xem thêm trong bài Collection trong java
ArrayList list = new ArrayList(); // non-generic - kiểu cũ ArrayList<String> list = new ArrayList<String>(); // generic - kiểu mới
Ví dụ về ArrayList trong java
Về các phương thức để duyệt collection trong java các bạn có thể xem thêm trong bài Collection trong java
Ví dụ ArrayList có kiểu generic là String
File: ArrayListExample1.java
import java.util.ArrayList; import java.util.Iterator; public class ArrayListExample1 { public static void main(String args[]) { // Creating arraylist ArrayList<String> list = new ArrayList<String>(); // Add objects to arraylist list.add("Java"); list.add("C++"); list.add("PHP"); list.add("Java"); // Show list through Iterator Iterator<String> itr = list.iterator(); while (itr.hasNext()) { System.out.print(itr.next() + ", "); } // Show list through for-each System.out.println(); for (String obj : list) { System.out.print(obj + ", "); } // Show list through index System.out.println(); int size = list.size(); for (int i = 0; i < size; i++) { System.out.print(list.get(i) + ", "); } } }
Ví dụ ArrayList có kiểu generic là đối tượng do người dùng định nghĩa
File: ArrayListExample2.java
import java.util.ArrayList; class Student { private String name; private int age; public Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student@[name=" + name + ", age=" + age + "]"; } } public class ArrayListExample2 { public static void main(String[] args) { // Create listStudent ArrayList<Student> listStudent = new ArrayList<Student>(); // Create students Student student1 = new Student("Bac", 17); Student student2 = new Student("Nam", 20); Student student3 = new Student("Trung", 19); // Add objects to listStudent listStudent.add(student1); listStudent.add(student2); listStudent.add(student3); // Show listStudent for (Student student : listStudent) { System.out.println(student.toString()); } } }
Output:
Student@[name=Bac, age=17] Student@[name=Nam, age=20] Student@[name=Trung, age=19]
Ví dụ các phương thức addAll(), removeAll(), retainAll() của lớp ArrayList
File: ArrayListExample3.java
import java.util.ArrayList; public class ArrayListExample3 { public static void main(String[] args) { // Create list ArrayList<String> list = new ArrayList<String>(); // Add objects to list list.add("Java"); list.add("C++"); list.add("PHP"); list.add("Java"); // addAll() ArrayList<String> listA = new ArrayList<String>(); listA.addAll(list); System.out.print("listA:"); showList(listA); // retainAll() listA ArrayList<String> listB = new ArrayList<String>(); listB.add("Java"); listA.retainAll(listB); System.out.print("listA:"); showList(listA); // removeAll() listA list.removeAll(listA); System.out.print("listA:"); showList(list); } public static void showList(ArrayList<String> list) { // Show list through for-each for (String obj : list) { System.out.print("\t" + obj + ", "); } System.out.println(); } }
Output:
listA: Java, C++, PHP, Java, listA: Java, Java, listA: C++, PHP,