ARRAY LIST
4. Introduction
Java cung cấp một lớp ArrayList để cung cấp các tính năng tương tự như Vector:
-Dynamic size (kích thước động): mở rộng và thu nhỏ tự động
Trong Java, chúng ta cần khai báo độ dài của một mảng trước khi sử dụng. Khi đã khai báo kích
thước của một mảng rồi thì rất khó để thay đổi kích thước đó.
Để xử lý vấn đề này, chúng ta có thể sử dụng lớp ArrayList. Các lớp ArrayList có mặt trong gói
java cho phép chúng ta tạo ra các mảng có thể thay đổi kích thước.
Không giống như mảng, ArrayList (đối tượng của class ArrayList) có thể tự động điều chỉnh kích
cỡ của nó khi chúng ta thêm vào hoặc xóa đi các phần tử. Do đó, ArrayList còn được gọi là mảng
động.
-Generic (chung): cho phép bất kỳ kiểu dữ liệu tham chiếu nào nghĩa
là tham số hóa kiểu dữ liệu. Tham số hóa kiểu dữ liệu rất quan trọng vì nó cho phép chúng ta
tạo ra và sử dụng một class, interface, method với nhiều kiểu dữ liệu khác nhau.
Một class, interface hay một method mà thực hiện trên một kiểu tham số xác định thì gọi
là Generic.
-Các phương pháp hữu ích được xác định trước
- Điểm giống nhau:
Cả ArrayList và Vector đều cài đặt interface List.
Đều duy trì thứ tự chèn của các phần tử.
- Điểm khác nhau:
ArrayList Vector
Từ JDK 1 Từ JDK 1.
ArrayList là non-synchronized.
- Đồng bộ trong java (Synchronization in
java) là khả năng kiểm soát truy cập của
nhiều luồng đến bất kỳ nguồn tài nguyên
chia sẻ (shared resource).
Vector là synchronized.
Nhanh hơn
(vì nó là non-synchronized)
Chậm hơn vì nó là synchronized.
Tức là, trong môi trường đa luồng, các thread
giữ nó ở trong trạng thái runnable hoặc non-
runnable cho đến khi thread hiện tại giải
phóng đối tượng đó.
ArrayList tăng 50% kích thước hiện tại nếu
số phần tử vượt quá khả năng chứa của nó.
Vector tăng 100% nghĩa là tăng gấp đôi kích
thước hiện tại nếu số phần tử vượt quá khả
năng chứa của nó..
Tham khảo thêm:
gpcoder/2737-so-sanh-arraylist-va-vector-trong-
java/#Giong_nhau_cua_ArrayList_va_Vector
icancodeit.wordpress/2019/08/15/faq-su-khac-nhau-giua-arraylist-va-vector-trong-
java/
ArrayList được ưu tiên nếu bạn không cần đồng bộ hóa
- Java hỗ trợ nhiều luồng và các luồng này có thể đọc / ghi vào các biến, đối tượng và tài nguyên
giống nhau. **Đồng bộ hóa là một cơ chế để đảm bảo luồng Java đó có thể thực thi các phương
thức được đồng bộ hóa của một đối tượng tại một thời điểm.
Khi sử dụng Vector / ArrayList, hãy luôn cố gắng khởi tạo ở mức lớn nhất dung lượng mà
chương trình của bạn sẽ cần, vì mở rộng mảng là tốn kém.
- Mở rộng mảng: cấp phát một mảng lớn hơn và sao chép nội dung của mảng cũ sang một cái
mới
Vậy khi nào sử dụng ArrayList hoặc Vector
import java.util;
Syntax:
// Khai báo tham chiếu ArrayList
ArrayList <E> myArrayList;
// Khởi tạo một đối tượng ArrayList rỗng
myArrayList = new ArrayList <E>;
Tóm tắt phương thức thường được sử dụng
boolean isEmpty ()
Trả về true nếu danh sách này không chứa
phần tử nào.
int size ()
Trả về số phần tử trong danh sách này.
boolean add (E e)
Thêm phần tử được chỉ định vào cuối danh
sách này.
Void add (int index, E element)
Chèn phần tử được chỉ định vào vị trí được
chỉ định trong danh sách này.
E remove (int index)
Loại bỏ phần tử ở vị trí được chỉ định trong
danh sách này.
boolean remove (Đối tượng o)
Loại bỏ sự xuất hiện đầu tiên của phần tử
được chỉ định khỏi điều này danh sách, nếu
nó có mặt.
E get (int index)
Trả về phần tử ở vị trí đã chỉ định trong danh
sách này.
int indexOf (Đối tượng o)
Trả về chỉ số của lần xuất hiện đầu tiên của
phần tử được chỉ định trong danh sách này,
hoặc -1 nếu danh sách này không chứa phần
tử.
boolean contains (Object elem)
Trả về true nếu danh sách này chứa phần tử
được chỉ định.
Tham khảo thêm: niithanoi.edu/vi-du-ve-cach-su-dung-arraylist-trong-java.html
viettuts/java-collection/arraylist-trong-java
4. Example:
import java.util;
public class Test_ArrayList {
public static void main(String[] args ) {
// Tao mot ArrayList
ArrayList<String> arlTest = new ArrayList<>();
// Kiem tra size cua arrayList
System.out("Size of ArrayList at creation: " + arlTest());
// Them vao ArrayList mot vai phan tu
arlTest("D");
arlTest("U");
arlTest("K");
arlTest("E");
// Kiem tra lai size sau khi da them moi
System.out("Size of ArrayList after adding elements: " + arlTest());
// Hiem thi ArrayList
System.out("List of all elements: " + arlTest);