Lớp ArrayList trong java
Lớp ArrayList trong java là một lớp kế thừa lớp AbstractList và triển khai của List Interface trong Collections Framework nên nó sẽ có một vài đặc điểm và phương thức tương đồng với List. ArrayList được sử dụng như một mảng động để lưu trữ các phần tử.
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.
Các phương thức trong Java ArrayList
- add(int index, Object element): Phương thức này được sử dụng để chèn một phần tử cụ thể vào một chỉ mục vị trí cụ thể trong danh sách.
- add(Object o): Phương thức này được sử dụng để thêm một phần tử cụ thể vào cuối danh sách.
- addAll(Collection C): Phương thức này được sử dụng để nối tất cả các phần tử từ một collection cụ thể vào cuối danh sách được đề cập, theo thứ tự sao cho các giá trị được trả về bởi trình lặp của collection đã chỉ định.
- addAll(int index, Collection C): Được sử dụng để chèn tất cả các phần tử bắt đầu từ vị trí đã chỉ định từ một collection cụ thể vào danh sách được đề cập.
- clear(): Phương thức này được sử dụng để xóa tất cả các phần tử khỏi bất kỳ danh sách nào.
- clone(): Phương thức này được sử dụng để trả về một bản sao nông của ArrayList.
- contains?(Object o): Trả về true nếu danh sách này chứa phần tử đã chỉ định.
- ensureCapacity?(int minCapacity) Tăng dung lượng của cá thể ArrayList này, nếu cần, để đảm bảo rằng nó có thể chứa ít nhất số phần tử được chỉ định bởi đối số dung lượng tối thiểu.
-
forEach?(Consumer
super E>
action) Thực hiện hành động đã cho cho từng phần tử của Iterable cho đến khi tất cả các phần tử đã được xử lý hoặc hành động đưa ra một ngoại lệ. - get?(int index) Trả về phần tử tại vị trí đã chỉ định trong danh sách này.
- indexOf(Object O) Chỉ mục lần xuất hiện đầu tiên của một phần tử cụ thể được trả về hoặc -1 trong trường hợp phần tử không có trong danh sách.
- isEmpty?() Trả về true nếu danh sách này không chứa phần tử nào.
- lastIndexOf(Object O) Chỉ mục của lần xuất hiện cuối cùng của một phần tử cụ thể được trả về hoặc -1 trong trường hợp phần tử không có trong danh sách.
- listIterator?() Trả về một trình lặp danh sách trên các phần tử trong danh sách này (theo trình tự thích hợp).
- listIterator?(int index) Trả về một trình lặp danh sách trên các phần tử trong danh sách này (theo trình tự thích hợp), bắt đầu từ vị trí đã chỉ định trong danh sách.
- remove?(int index) Xóa phần tử ở vị trí đã chỉ định trong danh sách này.
- remove?(Object o) Loại bỏ sự xuất hiện đầu tiên của phần tử được chỉ định khỏi danh sách này, nếu nó xuất hiện.
- removeAll?(Collection c) Xóa khỏi danh sách này tất cả các phần tử của nó được chứa trong collection đã chỉ định.
- removeIf?(Predicate filter) Xóa tất cả các phần tử của collection này thỏa mãn vị từ đã cho.
- removeRange?(int fromIndex, int toIndex) Xóa khỏi danh sách này tất cả các phần tử có chỉ mục nằm giữa fromIndex, bao gồm và toIndex, loại trừ.
-
keepAll?(Collection
>
c) Chỉ giữ lại các phần tử trong danh sách này được chứa trong collection đã chỉ định. - set?(int index, E element) Thay thế phần tử ở vị trí đã chỉ định trong danh sách này bằng phần tử đã chỉ định.
- size?() Trả về số phần tử trong danh sách này.
- spliterator?() Tạo một Spliterator ràng buộc muộn và không nhanh trên các phần tử trong danh sách này.
- subList?(int fromIndex, int toIndex) Trả về dạng xem của phần danh sách này giữa fromIndex, bao gồm và toIndex, loại trừ đã chỉ định.
- toArray() Phương thức này được sử dụng để trả về một mảng chứa tất cả các phần tử trong danh sách theo đúng thứ tự.
- toArray(Object[] O) Nó cũng đượ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ự giống như phương thức trước đó.
- trimToSize() Phương thức này được sử dụng để cắt bớt dung lượng của thể hiện của ArrayList theo kích thước hiện tại của danh sách.
Lưu ý: Bạn cũng có thể tạo một ArrayList chung:
ArrayList
arrli = new ArrayList
();
Một số điểm chính của ArrayList:
- ArrayList là Cấu trúc dữ liệu Array có thể thay đổi kích thước hoặc array có thể mở rộng số lượng phần tử.
- Các bản copy ArrayList được cho phép.
- Thứ tự chèn được giữ nguyên.
- Các đối tượng không đồng nhất được cho phép.
- Có thể chèn Null.
Hãy xem cách thực hiện một số thao tác cơ bản trên ArrayList như được liệt kê mà chúng ta sẽ thảo luận thêm bên cạnh việc triển khai mọi thao tác.
- Thêm phần tử vào List/ Thêm phần tử
- Thay đổi phần tử/ Đặt phần tử
- Xóa phần tử/Xóa phần tử
- Các phần tử lặp lại
- lấy các phần tử
- thêm các phần tử ở giữa hai số
- Sắp xếp các phần tử
- Kích thước ArrayList
Ví dụ 1: Thêm phần tử
Để thêm một phần tử vào một ArrayList, chúng ta có thể sử dụng phương thức add(). Phương thức này bị quá tải để thực hiện nhiều thao tác dựa trên các tham số khác nhau. Chúng như sau:
- add(Object): Phương thức này được sử dụng để thêm một phần tử vào cuối ArrayList.
- add(int index, Object): Phương thức này được sử dụng để thêm một phần tử vào một chỉ mục cụ thể trong ArrayList.
Thí dụ:
// khai bao thu vien utility classes import java.util.*; // class ArrayList_ex class ArrayList_ex { //ham main public static void main(String args[]) { //tao array voi kieu string ArrayList
al = new ArrayList<>(); //them cac element vao arraylist al.add(“element1”); al.add(“element2”); //them element tai index 1 al.add(1, “For”); //in tat ca element trong arraylist System.out.println(al); } }
Ví dụ 2: Thay đổi các phần tử
Sau khi thêm các phần tử, nếu chúng ta muốn thay đổi phần tử, có thể thực hiện bằng phương thức set(). Vì một ArrayList được lập chỉ mục, phần tử mà chúng ta muốn thay đổi được tham chiếu bởi chỉ mục của phần tử. Do đó, phương thức này lấy một chỉ mục và phần tử được cập nhật cần được chèn vào chỉ mục đó.
Thí dụ
import java.util.*; // ArrayList_ex class class ArrayList_ex { // ham main public static void main(String args[]) { //tao array voi kieu string ArrayList
al = new ArrayList<>(); //add string vao array al.add(“ArrayList_ex1”); al.add(“ArrayList_ex2”); // them object vao index 1 al.add(1, “ArrayList_ex3”); // in cac phan tu arraylist System.out.println(“Initial ArrayList ” + al); // set phan tu index 1 al.set(1, “For”); // in ra phan tu updated Arraylist System.out.println(“Updated ArrayList ” + al); } }
Ví dụ 3: Loại bỏ các phần tử
Để xóa một phần tử khỏi ArrayList, chúng ta có thể sử dụng phương thức remove(). Phương thức này bị quá tải để thực hiện nhiều thao tác dựa trên các tham số khác nhau. Chúng như sau:
remove(Object): Phương thức này được sử dụng để xóa một đối tượng khỏi ArrayList. Nếu có nhiều đối tượng như vậy, thì lần xuất hiện đầu tiên của đối tượng sẽ bị xóa.
remove(int index): Vì một ArrayList được lập chỉ mục, nên phương thức này nhận một giá trị số nguyên, đơn giản là loại bỏ phần tử có tại chỉ mục cụ thể đó trong ArrayList. Sau khi loại bỏ phần tử, tất cả các phần tử được di chuyển sang bên trái để lấp đầy khoảng trống và các chỉ số của đối tượng được cập nhật.
Thí dụ
import java.util.*; // Main class class ArrayList_ex { // Main driver method public static void main(String args[]) { // Creating an object of arraylist class ArrayList
al = new ArrayList<>(); // Adding elements to ArrayList // Custom addition al.add(“ArrayList_ex1”); al.add(“ArrayList_ex2”); // Adding element at specific index al.add(1, “For”); // Printing all elements of ArrayList System.out.println(“Initial ArrayList ” + al); // Removing element from above ArrayList al.remove(1); // Printing the updated Arraylist elements System.out.println(“After the Index Removal ” + al); // Removing this word element in ArrayList al.remove(“ArrayList_ex1”); // Now printing updated ArrayList System.out.println(“After the Object Removal ” + al); } }
Ví dụ 4: Lặp lại ArrayList
Có nhiều cách để lặp qua ArrayList. Các cách nổi tiếng nhất là sử dụng vòng lặp for cơ bản kết hợp với phương thức get() để lấy phần tử tại một chỉ mục cụ thể và vòng lặp for nâng cao.
Thí dụ
import java.util.*; // Main class class ArrayList_ex { // Main driver method public static void main(String args[]) { // Creating an Arraylist of string type ArrayList
al = new ArrayList<>(); // Adding elements to ArrayList // using standard add() method al.add(“ArrayList_ex1”); al.add(“ArrayList_ex2”); al.add(1, “For”); // Using the Get method and the // for loop for (int i = 0; i < al.size(); i++) { System.out.print(al.get(i) + ” “); } System.out.println(); // Using the for each loop for (String str : al) System.out.print(str + ” “); } }
Ví dụ 5-Lấy phần tử
/*package whatever //do not write package name here */ import java.io.*; import java.util.*; class ArrayList_ex { public static void main (String[] args) { ArrayList
list = new ArrayList(); // add the number list.add(9); list.add(5); list.add(6); System.out.println(list); // get method Integer n= list.get(1); System.out.println(“at indext 1 number is:”+n); } }
Ví dụ 6- Cộng các phần tử giữa hai số:
import java.io.*; import java.util.*; class ArrayList_ex { public static void main(String[] args) { ArrayList
list = new ArrayList(); list.add(1); list.add(2); list.add(4); System.out.println(list); // insert missing element 3 list.add(2, 3); System.out.println(list); } }
Ví dụ 7-Sắp xếp phần tử.
import java.io.*; import java.util.*; class ArrayList_ex { public static void main(String[] args) { ArrayList
list = new ArrayList(); list.add(2); list.add(4); list.add(3); list.add(1); System.out.println(“Before sorting list:”); System.out.println(list); Collections.sort(list); System.out.println(“after sorting list:”); System.out.println(list); } }
Ví dụ 8-Kích thước các phần tử:
import java.io.*; import java.util.*; class ArrayList_ex { public static void main(String[] args) { ArrayList
list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); int b = list.size(); System.out.println(“The size is :” + b); } }
Gán giá trị cho ArrayList trong java?
Xin chào mọi người. em có 1 arraylist bao gồm các đối tượng (data) của em định nghĩa. giờ em muốn tạo 1 arraylist thứ 2 để copy toàn bộ của arraylist đầu tiên. nhưng khi em thay đổi giá trị của thằng thứ 2 thì thằng đầu tiên cũng bị thay đổi theo. Vậy làm thế nào để copy mà nó không thay đổi giá trị của mảng gốc ạ?
em đã thử dùng cả 2 cách như trên nhưng không hiệu quả. rất mong dc sư giúp đỡ của mọi người em cảm ơn ạ!
ArrayList
arr2 = new ArrayList
(arr); //tạo arr2 truyền tham số là arr //hoặc arr2 = arr; arr2.get(0).ThoiGianDen--; for(int i = 0; i < arr.size(); i++) //xuất arr { arr.get(i).Xuat(); }
Bình luận
Do ArrayList chỉ chứa các object mà object là kiểu tham chiếu nên cho dù có sao chép (tạo mới vùng nhớ cho ArrayList) thì dữ liệu bên trong (các object) cũng tham chiếu đến nhau thôi. Để giải quyết vấn đề hoặc là bạn tìm cấu trúc dữ liệu khác để lưu trữ hoặc bạn có thể xử lý như sau:
+ Trong lớp của bạn, bạn tạo ra 1 hàm clone mục đích là để sao chép các đối tượng theo cách của bạn. Nhớ là hàm này để public và hàm này là override cho hàm clone của lớp Object.
+ Duyệt qua các phần tử của ArrayList ban đầu sau đó add mới vào ArrayList copy.
Đây là code minh hoạ của mình:
public class Test { public static void main(String[] args) { ArrayList
arr = new ArrayList
(); arr.add(new ObjectClass(2, 3)); arr.add(new ObjectClass(4, 5)); ArrayList
arr2 = new ArrayList
(); // Duyệt qua tất cả các phần tử của arr for (ObjectClass item: arr) { arr2.add(item.clone()); // thêm object đã được tạo mới (clone) vào arr2 } arr2.get(0).x--; System.out.println("arr.x: " + arr.get(0).x + " arr2.x: " + arr2.get(0).x); } } // lớp do mình tạo ra class ObjectClass { public ObjectClass(int x, int y) { this.x = x; this.y = y; } public int x; public int y; @Override public ObjectClass clone() { // hàm clone mình tự viết mục đích là tạo ra đối tượng mới và sao chép nội dung của đối tượng cũ. return new ObjectClass(this.x, this.y); } }
Bạn dùng List thay cho ArrayList thì sẽ ra ngay: Ví dụ:
List
l1 = new ArrayList
(); l1.add(“Hello”); l1.add(“World”); List
l2 = new ArrayList
(l1); l2.add(“Everybody”); Log.e(“log”, String.valueOf(l2.size()));//=>kq: 3 Log.e(“log”, String.valueOf(l1.size()));//=>kq: 2
l2.set(1, “Change”); Log.e(“log”, l1.get(1));//=>kq: “World” Log.e(“log”, l2.get(1));//=> “Change”
Các tính năng quan trọng của ArrayList:
- ArrayList kế thừa lớp AbstractList và triển khai List interface.
- ArrayList được khởi tạo theo kích thước. Tuy nhiên, kích thước sẽ tự động tăng lên nếu collection tăng lên hoặc thu nhỏ lại nếu các đối tượng bị xóa khỏi collection.
- Java ArrayList cho phép chúng ta truy cập ngẫu nhiên vào danh sách.
- ArrayList không thể được sử dụng cho các kiểu nguyên thủy, như int, char, v.v. Chúng ta cần một class bao bọc cho những trường hợp như vậy.
- ArrayList trong Java có thể được xem như một vector trong C++.
- ArrayList không được Synchronized. Lớp Synchronized tương đương của nó trong Java là Vector.
Hãy hiểu sâu hơn về ArrayList trong Java. Nhìn vào hình ảnh dưới đây:
Trong hình minh họa ở trên, AbstractList, CopyOnWriteArrayList và AbstractSequentialList là các lớp triển khai list interface. Một chức năng riêng biệt được thực hiện trong mỗi class được đề cập.
- AbstractList: class này được sử dụng để triển khai một danh sách không thể sửa đổi, mà danh sách này chỉ cần mở rộng class AbstractList này và chỉ triển khai các phương thức get() và size().
- CopyOnWriteArrayList: class này implement list interface. Đây là phiên bản nâng cao của ArrayList trong đó tất cả các sửa đổi (thêm, đặt, xóa, v.v.) được triển khai bằng cách tạo một bản sao mới của danh sách.
- AbstractSequentialList: class này triển khai interface collection và class AbstractCollection. Class này được sử dụng để implement một danh sách không thể sửa đổi, mà danh sách này chỉ cần mở rộng Lớp AbstractList này và chỉ triển khai các phương thức get() và size().
Synchronizing Access to an ArrayList
The ArrayList class is not synchronized. If multiple threads try to modify an ArrayList at the same time then the final result becomes not-deterministic because one thread might override the changes done by another thread.
Example Demonstrating ArrayList’s unpredictable behavior in multi-threaded environments
The following example shows what happens when multiple threads try to modify an ArrayList at the same time.
import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class UnsafeArrayListExample { public static void main(String[] args) throws InterruptedException { List
unsafeArrayList = new ArrayList<>(); unsafeArrayList.add(1); unsafeArrayList.add(2); unsafeArrayList.add(3); // Create a thread pool of size 10 ExecutorService executorService = Executors.newFixedThreadPool(10); // Create a Runnable task that increments each element of the ArrayList by one Runnable task = () -> { incrementArrayList(unsafeArrayList); }; // Submit the task to the executor service 100 times. // All the tasks will modify the ArrayList concurrently for(int i = 0; i < 100; i++) { executorService.submit(task); } executorService.shutdown(); executorService.awaitTermination(60, TimeUnit.SECONDS); System.out.println(unsafeArrayList); } // Increment all the values in the ArrayList by one private static void incrementArrayList(List
unsafeArrayList) { for(int i = 0; i < unsafeArrayList.size(); i++) { Integer value = unsafeArrayList.get(i); unsafeArrayList.set(i, value + 1); } } }
The final output of the above program should be equal to
[101, 102, 103]
because we’re incrementing the values in the ArrayList 100 times. But if you run the program, it will produce different output every time it is run –
# Output [96, 96, 98]
Try running the above program multiple times and see how it produces different outputs. To learn more about such issues in multi-threaded programs, check out my article on Java Concurrency Issues and Thread Synchronization.
Example demonstrating how to synchronize concurrent modifications to an ArrayList
All right! Now let’s see how we can synchronize access to the
ArrayList
in multi-threaded environments.
The following example shows the synchronized version of the previous example. Unlike the previous program, the output of this program is deterministic and will always be the same.
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class SynchronizedArrayListExample { public static void main(String[] args) throws InterruptedException { List
safeArrayList = Collections.synchronizedList(new ArrayList<>()); safeArrayList.add(1); safeArrayList.add(2); safeArrayList.add(3); // Create a thread pool of size 10 ExecutorService executorService = Executors.newFixedThreadPool(10); // Create a Runnable task that increments each element of the ArrayList by one Runnable task = () -> { incrementArrayList(safeArrayList); }; // Submit the task to the executor service 100 times. // All the tasks will modify the ArrayList concurrently for(int i = 0; i < 100; i++) { executorService.submit(task); } executorService.shutdown(); executorService.awaitTermination(60, TimeUnit.SECONDS); System.out.println(safeArrayList); } // Increment all the values in the ArrayList by one private static void incrementArrayList(List
safeArrayList) { synchronized (safeArrayList) { for (int i = 0; i < safeArrayList.size(); i++) { Integer value = safeArrayList.get(i); safeArrayList.set(i, value + 1); } } } }
# Output [101, 102, 103]
The above example uses
Collections.synchronizedList()
method to get a synchronized view of the ArrayList.
Moreover, the modifications to the ArrayList inside the
incrementArrayList()
method is wrapped inside a
synchronized
block. This ensures that no two threads can increment ArrayList elements at the same time.
You can also use a
CopyOnWriteArrayList
if you need thread safety. It is a thread-safe version of the ArrayList class. It implements all the mutating operations by making a fresh copy of the ArrayList.
Add Items
The
ArrayList
class has many useful methods. For example, to add elements to the
ArrayList
, use the
add()
method:
Example
import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList
cars = new ArrayList
(); cars.add("Volvo"); cars.add("BMW"); cars.add("Ford"); cars.add("Mazda"); System.out.println(cars); } }
Java ArrayList
The
ArrayList
class is a resizable array, which can be found in the
java.util
package.
The difference between a built-in array and an
ArrayList
in Java, is that the size of an array cannot be modified (if you want to
add or remove elements to/from an array, you have to create a new one). While elements can be added and removed from an
ArrayList
whenever you want. The syntax is also slightly different:
Example
Create an
ArrayList
object called cars that will store strings:
import java.util.ArrayList; // import the ArrayList class ArrayList
cars = new ArrayList
(); // Create an ArrayList object
If you don’t know what a package is, read our Java Packages Tutorial.
Java
|
List: [10, 20, 30, 40]
the element at index 2 is 30
Example 2: Program to demonstrate the error
Removing elements from an ArrayList
This example shows:
-
How to remove the element at a given index in an ArrayList | remove(int index)
-
How to remove an element from an ArrayList | remove(Object o)
-
How to remove all the elements from an ArrayList that exist in a given collection | removeAll()
-
How to remove all the elements matching a given predicate | removeIf()
-
How to clear an ArrayList | clear()
import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; public class RemoveElementsFromArrayListExample { public static void main(String[] args) { List
programmingLanguages = new ArrayList<>(); programmingLanguages.add("C"); programmingLanguages.add("C++"); programmingLanguages.add("Java"); programmingLanguages.add("Kotlin"); programmingLanguages.add("Python"); programmingLanguages.add("Perl"); programmingLanguages.add("Ruby"); System.out.println("Initial List: " + programmingLanguages); // Remove the element at index `5` programmingLanguages.remove(5); System.out.println("After remove(5): " + programmingLanguages); // Remove the first occurrence of the given element from the ArrayList // (The remove() method returns false if the element does not exist in the ArrayList) boolean isRemoved = programmingLanguages.remove("Kotlin"); System.out.println("After remove(\"Kotlin\"): " + programmingLanguages); // Remove all the elements that exist in a given collection List
scriptingLanguages = new ArrayList<>(); scriptingLanguages.add("Python"); scriptingLanguages.add("Ruby"); scriptingLanguages.add("Perl"); programmingLanguages.removeAll(scriptingLanguages); System.out.println("After removeAll(scriptingLanguages): " + programmingLanguages); // Remove all the elements that satisfy the given predicate programmingLanguages.removeIf(new Predicate
() { @Override public boolean test(String s) { return s.startsWith("C"); } }); /* The above removeIf() call can also be written using lambda expression like this - programmingLanguages.removeIf(s -> s.startsWith("C")) */ System.out.println("After Removing all elements that start with \"C\": " + programmingLanguages); // Remove all elements from the ArrayList programmingLanguages.clear(); System.out.println("After clear(): " + programmingLanguages); } }
# Output Initial List: [C, C++, Java, Kotlin, Python, Perl, Ruby] After remove(5): [C, C++, Java, Kotlin, Python, Ruby] After remove("Kotlin"): [C, C++, Java, Python, Ruby] After removeAll(scriptingLanguages): [C, C++, Java] After Removing all elements that start with "C": [Java] After clear(): []
Creating an ArrayList from another collection
This example shows:
-
How to create an ArrayList from another collection using the
ArrayList(Collection c)
constructor. -
How to add all the elements from an existing collection to the new ArrayList using the
addAll()
method.
import java.util.ArrayList; import java.util.List; public class CreateArrayListFromCollectionExample { public static void main(String[] args) { List
firstFivePrimeNumbers = new ArrayList<>(); firstFivePrimeNumbers.add(2); firstFivePrimeNumbers.add(3); firstFivePrimeNumbers.add(5); firstFivePrimeNumbers.add(7); firstFivePrimeNumbers.add(11); // Creating an ArrayList from another collection List
firstTenPrimeNumbers = new ArrayList<>(firstFivePrimeNumbers); List
nextFivePrimeNumbers = new ArrayList<>(); nextFivePrimeNumbers.add(13); nextFivePrimeNumbers.add(17); nextFivePrimeNumbers.add(19); nextFivePrimeNumbers.add(23); nextFivePrimeNumbers.add(29); // Adding an entire collection to an ArrayList firstTenPrimeNumbers.addAll(nextFivePrimeNumbers); System.out.println(firstTenPrimeNumbers); } }
# Output [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
Các phương thức (method) của lớp ArrayList
Phương thức | Mô tả |
boolean add(Object o) | Thêm phần tử được chỉ định vào cuối một danh sách. |
void add(int index, Object element) | Chèn một phần tử được chỉ định tại vị trí (index) được chỉ định vào danh sách. Ném IndexOutOfBoundsException nếu index này ở bên ngoài dãy (index < 0 hoặc index > size()). |
boolean addAll(Collection c) | Thêm tất cả các phần tử trong collection được chỉ định vào cuối của danh sách gọi phương thức, theo thứ tự chúng được trả về bởi bộ lặp iterator. |
boolean addAll(int index, Collection c) | Thêm tất cả các phần tử trong collection được chỉ định vào danh sách gọi phương thức, bắt đầu từ vị trí đã chỉ định. Ném NullPointerException nếu collection đã cho là null. |
Object get(int index) | Trả về phần tử tại index đã cho. Ném IndexOutOfBoundsException nếu index đã cho là ở bên ngoài dãy (index < 0 hoặc index >= size()). |
int indexOf(Object o) | Lấy vị trí (index) 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) | Lấy vị trí (index) 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 remove(int index) | Gỡ bỏ phần tử tại index đã cho. Ném IndexOutOfBoundsException nếu index ở ngoài dãy (index < 0 hoặc index >= size()). |
void retainAll(Collection c) |
Chỉ giữ lại các phần tử trong tập hợp này được chứa trong tập hợp đã chỉ định (những phần tử thuộc collection c).
Ném NullPointerException nếu collection đã cho là null. |
void removeAll(Collection c) |
Loại bỏ tất cả các phần tử của bộ sưu tập này cũng có trong bộ sưu tập được chỉ định (những phần tử thuộc collection c). Sau khi thực thi, phương thức này trả về một tập hợp không chứa phần tử nào chung với tập hợp được chỉ định.
Ném NullPointerException nếu collection đã cho là null. |
Object set(int index, Object element) | Thay thế phần tử tại vị trí đã cho trong list này với phần tử đã xác định. Ném IndexOutOfBoundsException nếu index ở ngoài dãy (index < 0 hoặc index >= size()). |
Object[] toArray() | Chuyển một danh sách sang mảng và 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ự. Ném NullPointerException nếu mảng này là null. |
Object[] toArray(Object[] a) | Chuyển một danh sách sang mảng và 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ự. Kiểu runtime là của mảng trả về giống như mảng đã xác định. |
Object clone() | Tạo một bản sao của ArrayList. |
void clear() | Xóa tất cả các phần tử từ danh sách. |
void trimToSize() | 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. |
Java
|
Output :
Exception in thread “main” java.lang.IndexOutOfBoundsException: Index: 5, Size: 4
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)
at GFG.main(GFG.java:22)
Feeling lost in the vast world of Backend Development? It’s time for a change! Join our Java Backend Development – Live Course and embark on an exciting journey to master backend development efficiently and on schedule. What We Offer:
- Comprehensive Course
- Expert Guidance for Efficient Learning
- Hands-on Experience with Real-world Projects
- Proven Track Record with 100,000+ Successful Geeks
Last Updated :
11 Jan, 2023
Like Article
Save Article
Share your thoughts in the comments