ArrayList trong Java là cấu trúc dữ liệu được sử dụng phổ biến nhất để tạo một mảng kích thước động. Nó mở rộng lớp Abstract và triển khai Danh sách Java giao diện. Sự khác biệt chính giữa mảng và ArrayList là mảng là tĩnh [chúng ta không thể thêm hoặc bớt các phần tử] trong khi ArrayList là động [chúng ta có thể thêm, bớt hoặc sửa đổi các phần tử]. Trong bài này, chúng ta sẽ xem ArrayList là gì và cách khởi tạo ArrayList trong Java như thế nào?
Bạn cũng có thể quan tâm ArrayList so với LinkedList
Java ArrayList Hierarchy
Khai báo một lớp ArrayList trong Java
Để sử dụng ArrayList trong Java, chúng ta phải nhập java.util.ArrayList. Dưới đây là phần khai báo của ArrayList
lớp công khai ArrayList mở rộng danh sách AbstractList danh sách triển khai , RandomAccess, Cloneable, Serializable
trong đó E biểu thị phần tử hoặc kiểu đối tượng [Ví dụ: Số nguyên, Chuỗi, v.v.]
Lớp ArrayList mở rộng lớp AbstractList và triển khai giao diện Danh sách.
ArrayList Constructors
Chúng ta có thể tạo ArrayList trong Trình tạo Java trong 3 phương pháp dưới đây:
Lập danh sách[] | Điều này tạo ra một danh sách mảng trống |
ArrayList [Bộ sưu tập c] | Điều này tạo ra một danh sách mảng với các phần tử của bộ sưu tập |
ArrayList [kích thước int] | Điều này tạo ra một danh sách mảng có kích thước cụ thể |
Các tính năng của Java ArrayList
- Nó là một mảng động có thể thay đổi kích thước, nơi chúng ta có thể thêm, sửa đổi hoặc loại bỏ các yếu tố bất kỳ lúc nào từ danh sách
- Duy trì một thứ tự tuần tự.
- Nó rất dễ dàng để truy cập bất kỳ dữ liệu nào từ danh sách dựa trên chỉ mục.
- Cho phép bản sao các yếu tố trong danh sách
Các phương thức Java ArrayList
Ngoài các phương thức dưới đây, ArrayList trong Java có truy cập cho tất cả các phương thức của giao diện Danh sách.
Boolean thêm [Đối tượng e] | Thêm phần tử được chỉ định vào cuối danh sách. | e - phần tử được thêm vào. Giá trị trả về - Đúng |
void add [int index, Object e] | Thêm phần tử vào chỉ mục được chỉ định. Nếu chỉ mục đã chứa một phần tử, nó sẽ được chuyển sang bên phải | index- chỉ mục mà tại đó phần tử cần được chèn vào e - phần tử cần được chèn |
Boolean addAll [Bộ sưu tập c] | Thêm một tập hợp các phần tử được chỉ định vào danh sách. | c - tập hợp các phần tử được thêm vào Giá trị trả về - đúng |
Boolean addAll [int index, Collection c] | Thêm một tập hợp các phần tử tại chỉ mục được chỉ định. Nếu chỉ mục đã chứa phần tử, sau đó nó sẽ được chuyển sang bên phải | index - chỉ mục mà tại đó các phần tử cần được thêm vàoc - tập hợp các phần tử được thêm vào Giá trị trả về - Đúng |
void clear [] | Xóa tất cả các phần tử trong danh sách. | |
Boolean chứa [Đối tượng o] | Kiểm tra xem danh sách có chứa phần tử được chỉ định hay không | Giá trị trả về - true nếu danh sách chứa phần tử |
Boolean chứaAll [Bộ sưu tập c] | Kiểm tra xem danh sách có chứa tất cả các phần tử trong bộ sưu tập hay không | Giá trị trả về - true nếu danh sách chứa tất cả các phần tử |
Boolean bằng [Đối tượng o] | So sánh nếu danh sách chứa tất cả các phần tử được chỉ định theo thứ tự chính xác | Giá trị trả về - true nếu các phần tử đối tượng khớp với danh sách |
Đối tượng getIndex [int index] | Truy xuất phần tử ở chỉ mục được chỉ định | index - chỉ mục mà tại đó phần tử cần được truy xuất Giá trị trả về - Phần tử ở chỉ mục được chỉ định |
int indexOf [Đối tượng o] | Tìm nạp chỉ mục của lần xuất hiện đầu tiên của phần tử được chỉ định | o - Yếu tố được xác định Giá trị trả về - giá trị chỉ mục |
Boolean isEmpty [] | Kiểm tra xem danh sách có trống hay không | Giá trị trả về - đúng nếu danh sách không chứa giá trị |
Trình lặp lặp lại lặp lại [] | Truy xuất trình lặp của danh sách theo trình tự | Giá trị trả về - Trình lặp lại |
int lastIndexOf [Đối tượng o] | Truy xuất lần xuất hiện cuối cùng của đối tượng được chỉ định | o - Yếu tố cần xác định Giá trị trả về - giá trị chỉ mục |
Loại bỏ đối tượng [int index] | Loại bỏ phần tử tại chỉ mục được chỉ định | index - vị trí chỉ mục mà tại đó phần tử phải được xóa Giá trị trả về - Phần tử bị xóa |
Boolean remove [Đối tượng o] | Loại bỏ sự xuất hiện đầu tiên của đối tượng được chỉ định khỏi danh sách nếu có | o - Phần tử cần được loại bỏ Giá trị trả về - true nếu danh sách chứa phần tử |
Boolean removeAll [Bộ sưu tập c] | Loại bỏ sự xuất hiện đầu tiên của tất cả các phần tử trong bộ sưu tập khỏi danh sách nếu có | c - tập hợp các phần tử Giá trị trả về - true nếu danh sách chứa bộ sưu tập |
Boolean keepAll [Bộ sưu tập c] | Giữ lại tất cả các phần tử được chỉ định trong bộ sưu tập trong danh sách. Các phần tử khác sẽ bị xóa | c - tập hợp các phần tử phải được giữ lại Giá trị trả về - true nếu danh sách thay đổi do phương thức được gọi |
Tập đối tượng [int index, Object o] | Thay thế phần tử tại chỉ mục được chỉ định bằng đối tượng được truyền | o - phần tử được thay thếindex - chỉ mục của phần tử Giá trị trả về - Trả về phần tử trước đó ở chỉ mục được chỉ định |
int size [] | Tìm nạp kích thước của danh sách | Giá trị trả về - kích thước của danh sách |
Liệt kê danh sách con [int fromIndex, int toIndex] | Truy xuất một phần của danh sách dựa trên start và endIndex | fromIndex - vị trí mà từ đó danh sách con phải được truy xuất [bao gồm] toIndex - chỉ mục cho đến khi danh sách con phải được truy xuất [loại trừ] |
void ensureCapacity [int mincapacity] | Tăng kích thước của danh sách mảng và đảm bảo nó có thể chứa dung lượng tối thiểu như đã đề cập | mincapacity - số phần tử tối thiểu mà danh sách mảng có thể giữ |
void sort [Bộ so sánh c] | Sắp xếp các phần tử trong danh sách dựa trên đối số so sánh | c - compartor được sử dụng để so sánh các phần tử danh sách |
Đối tượng [] toArray [] | Trả về một mảng các phần tử theo trình tự thích hợp | Giá trị trả về - Mảng của tất cả các phần tử trong danh sách theo trình tự thích hợp |
Chuỗi toString [] | Trả về biểu diễn chuỗi của tập hợp các phần tử mảng | Giá trị trả về - Chuỗi các phần tử mảng được phân tách bằng dấu phẩy và dấu cách và được đặt trong [] |
void trimToSize [] | Cắt kích thước của cá thể ArrayList thành kích thước danh sách hiện tại |
Khai báo chung và không chung chung của Java ArrayList
Trước JDK 1.5, Khung Bộ sưu tập Java chung chung như được mô tả dưới đây.
ArrayList al = new ArrayList []; -> Danh sách có thể chứa bất kỳ loại phần tử nào
Sau JDK 1.5, nó hỗ trợ không chung chung có thể được sử dụng như bên dưới. Chúng ta có thể chỉ định loại phần tử trong .
Lập danh sách al = new ArrayList []; -> Danh sách chỉ có thể chứa các giá trị Chuỗi
Lập danh sách al = new ArrayList []; -> Danh sách chỉ có thể chứa giá trị Số nguyên
Java ArrayList Exceptions
ArrayList in Java ném các trường hợp ngoại lệ dưới đây:
- UnsupportedOperationException - khi hoạt động không được hỗ trợ
- IndexOutofBoundsException - khi chỉ mục không hợp lệ được chỉ định [fromIndex toIndex hoặc toIndex> size]
- ClassCastException - khi lớp của phần tử được chỉ định ngăn cản việc thêm nó vào danh sách
- NullPointerException - khi phần tử được chỉ định là null và danh sách không cho phép thêm phần tử null
- IllegalArgumentException - khi một số thuộc tính của phần tử ngăn cản việc thêm vào danh sách
Nhập ArrayList trong Java
Trước khi bắt đầu sử dụng lớp ArrayList, chúng ta cần nhập gói có liên quan để sử dụng nó. Đối với điều này, chúng tôi nhập gói bên dưới để sử dụng ArrayList.
import java.util.ArrayList;Khai báo ArrayList trong Java
Chúng ta có thể khai báo ArrayList trong Java bằng cách tạo biến của kiểu ArrayList. Chúng ta cũng có thể chỉ định kiểu danh sách là Chuỗi hoặc Số nguyên, v.v ... Dưới đây là ví dụ về việc khai báo Danh sách Mảng của kiểu Chuỗi và Số nguyên.
ArrayList colors; ArrayList weight;Tạo ArrayList trong Java
Khi chúng ta khai báo một ArrayList, chúng ta có thể tạo nó bằng cách gọi phương thức khởi tạo để khởi tạo một đối tượng và gán nó cho biến. Chúng ta có thể sử dụng bất kỳ hàm tạo nào như đã thảo luận ở trên. Chúng ta cũng có thể khai báo và tạo ArrayList trong một câu lệnh như bên dưới.
ArrayList colors = new ArrayList[];[HOẶC LÀ]
Làm thế nào để khởi tạo ArrayList trong Java?
Khi chúng ta khai báo và tạo ArrayList, chúng ta có thể khởi tạo nó với các giá trị cần thiết. Có một số phương pháp để khởi tạo ArrayList như được đề cập bên dưới.
DataOutputStream trong Java
Sử dụng phương thức add []
Một phương pháp phổ biến để khởi tạo ArrayList trong Java là sử dụng phương thức add [].
ArrayList colors = new ArrayList[]; colors.add["Red"]; colors.add["Blue"]; colors.add["Green"];Sử dụng phương thức asList []
Chúng ta có thể sử dụng phương thức asList [] của lớp Arrays trong khi tạo ArrayList. Đây là một phương thức khác để khởi tạo ArrayList.
ArrayList color = new ArrayList[ Arrays.asList["Red","Blue","Green"] ];Sử dụng phương thức List.Of []
Phương thức List.of [] là một cách khác để khởi tạo ArrayList.
List colors = new ArrayList[ List.of["Red","Blue","Green"] ];Sử dụng Bộ sưu tập khác
Chúng ta cũng có thể khởi tạo ArrayList bằng cách sử dụng các giá trị của Bộ sưu tập khác. Trong đoạn mã dưới đây, chúng tôi khởi tạo biến dữ liệu với các giá trị ArrayList màu.
ArrayList colors = new ArrayList[]; colors.add["Red"]; colors.add["Blue"]; colors.add["Green"]; ArrayList data = new ArrayList[colors];Ví dụ về Java ArrayList
Tạo ArrayList và thêm các phần tử và bộ sưu tập
Đầu tiên, chúng tôi tạo một ArrayList trong Java kiểu Chuỗi và sau đó thêm các phần tử vào danh sách. Sau đó, chúng tôi thêm một phần tử mới tại chỉ mục 1. Do đó, phần tử đã có mặt trước đó ở chỉ mục 1 sẽ di chuyển tuần tự sang bên phải. Chỉ mục trong một mảng luôn bắt đầu từ 0.
Tiếp theo, chúng tôi tạo một danh sách mới với 2 phần tử và thêm toàn bộ tập hợp vào danh sách 1 tại chỉ mục 1.
Sửa đổi và xóa một phần tử khỏi ArrayList
Dưới đây là một chương trình ví dụ để sửa đổi mảng liệt kê và xóa một phần tử khỏi ArrayList trong Java.
import java.util.ArrayList; public class ArrayListDemo2 { public static void main[String[] args] { //Create an Integer ArrayList ArrayList numbers = new ArrayList[]; numbers.add[4]; numbers.add[8]; numbers.add[2]; System.out.println["Elements in the list are: "]; System.out.println[numbers]; //Modify element numbers.set[1, 6]; System.out.println["After modifying an element at index 1:"]; System.out.println[numbers]; //Remove an element numbers.remove[2]; System.out.println["After removing an element at index 2:"]; System.out.println[numbers]; } } Output: Elements in the list are: [4, 8, 2] After modifying an element at index 1: [4, 6, 2] After removing an element at index 2: [4, 6]Các phương pháp hữu ích khác
Ví dụ dưới đây minh họa việc sử dụng các phương thức chứa [], indexOf [] và keepAll [] là một phần của ArrayList.
import java.util.ArrayList; public class ArrayListDemo4 { public static void main[String[] args] { ArrayList letters = new ArrayList[]; letters.add["A"]; letters.add["G"]; letters.add["R"]; System.out.println[letters.contains["U"]]; int i = letters.indexOf["G"]; System.out.println["Index of G is " + i]; ArrayList c = new ArrayList[]; c.add["F"]; c.add["E"]; c.add["T"]; c.add["P"]; letters.addAll[c]; System.out.println["Elements in the list after using addAll:"]; System.out.println[letters]; letters.retainAll[c]; System.out.println["Elements in the list after using retainAll:"]; System.out.println[letters]; } } Output: false Index of G is 1 Elements in the list after using addAll: [A, G, R, F, E, T, P] Elements in the list after using retainAll: [F, E, T, P]Xóa ArrayList trong java
Ví dụ dưới đây cho thấy rõ ràng kết quả của việc sử dụng các phương thức isEmpty [] và clear [] trong ArrayList. Sử dụng phương thức clear [], chúng ta có thể làm trống ArrayList bằng cách loại bỏ tất cả các phần tử.
import java.util.ArrayList; public class ArrayListDemo5 { public static void main[String[] args] { ArrayList s = new ArrayList[]; s.add["India"]; s.add["US"]; s.add["Germany"]; System.out.println["Contents in list:"]; System.out.println[s]; System.out.println["Result of calling isEmpty[]: " + s.isEmpty[]]; s.clear[]; System.out.println["Contents in list after calling clear[]: " + s]; System.out.println["Result of calling isEmpty[] after clear: " + s.isEmpty[]]; } } Contents in list: [India, US, Germany] Result of calling isEmpty[]: false Contents in list after calling clear[]: [] Result of calling isEmpty[] after clear: trueensureCapacity []
Phương pháp này đảm bảo rằng Java ArrayList có thể chứa số phần tử tối thiểu. Điều này có thể được sử dụng cho kích thước mảng đang phát triển động.
import java.util.ArrayList; public class ArrayListDemo6 { public static void main[String[] args] { ArrayList al = new ArrayList[]; al.add["Mango"]; al.add["Guava"]; al.add["Apple"]; al.ensureCapacity[3]; System.out.println["Array list can storetối thiểu
of 3 elements"]; al.add["Orange"]; System.out.println[al]; } } Output: Array list can store minimum of 3 elements [Mango, Guava, Apple, Orange]In ArrayList trong Java - Lặp lại hoặc điều hướng qua các phần tử
Chúng ta có thể lặp lại thông qua ArrayList trong Java bằng bất kỳ phương pháp nào dưới đây:
- Vòng lặp for
- Cho mỗi
- Giao diện lặp lại
- Giao diện ListIterator
FileInputStream trong Java
Nhận các phần tử bằng vòng lặp for
Ở đây, chúng tôi sử dụng vòng lặp for để truy xuất các phần tử của mảng và in chúng ở đầu ra.
import java.util.ArrayList; public class ArrayListDemo3 { public static void main[String[] args] { ArrayList list = new ArrayList[]; list.add["Ramesh"]; list.add["Banu"]; list.add["Priya"]; list.add["Karthik"]; int size = list.size[]; System.out.println["Size of list is : " + size]; for[int i=0;i