- Collection bản chất là tập các lớp dùng để lưu trữ danh sách và có khả năng tự co giãn khi danh sách thay đổi: Thêm , sửa, xóa, chèn…
- Hai lớp Collection thường được sử dụng nhiều nhất là ArrayList và Hashmap
- ArrayList sử dụng cấu trúc mảng để lưu trữ phần tử, tuy nhiên có hai đặc điểm khác mảng:
- Không cần khai báo trước kiểu phần tử.
- Không cần xác định trước số lượng phần tử (kích thước mảng).
- Nó có khả năng truy cập phần tử ngẫu nhiên (Do thừa kế từ interface RandomAccess).
Phương
thức khởi tạo
- ●ArrayList()
- ●ArrayList(Collection c)
- ●ArrayList(int initialCapactity)
Các phương thức chính
- ●add(Object o)
- ●remove(Object o)
- ●get(int index)
- ●size()
- ●isEmpty()
- ●contains(Object o)
- ●clear()
Giới thiệu về HashMap
- ●Là kiểu tập hợp từ điển, HashMap cho phép truy xuất trực tiếp tới một đối tượng bằng khoá duy nhất của nó. Cả hai khoá và đối tượng có thể thuộc bất cứ kiểu nào.
qphương thức khởi tạo
- ●HashMap()
- ●HashMap(Collection c)
- ●HashMap(int capacity)
qCác phương thức chính
- ●put(Object key, Object value)
- ●get(Object key)
- ●remove(Object key)
- ●containsKey(Object key)
- ●containsValue(Object value)
- ●size()
- ●isEmpty
Array:
Mảng là một loại biến đặc biệt, bao gồm một dãy các ô nhớ có nhiều ô nhớ con cho phép biểu diễn thông tin dạng danh sách trong thực tế
- Các phần tử trong mảng có cùng kiểu dữ liệu với nhau
- Lợi ích của việc sử dụng mảng
- Mảng là cách tốt nhất cho phép quản lý nhiều phần tử dữ liệu có cùng kiểu tại cùng một thời điểm
- Mảng tạo ra sự tối ưu trong việc quản lý bộ nhớ so với việc sử dụng nhiều biến cho cùng một chức năng
- Bộ nhớ có thể được gán cho mảng chỉ khi mảng thực sự được sử dụng. Do đó, bộ nhớ không bị tiêu tốn cho mảng ngay khi bạn khai báo mảng.
Khai báo và khởi tạo
- Khai báo không khởi tạo kích thước và giá trị
- KiểudDữLiệu[] TênMảng;
- KiểuDữLiệu TênMảng[];
- §Ví dụ: int[] a; int a[];
// import java.util.Arrays;
- int array[] = { 2, 5, -2, 6, -3, 8, 0, 7, -9, 4 };
- int array1[] = { 2, 5, 6, -3, 8};
- // Sắp xếp mảng số nguyên
- Arrays.sort(array);
- // So sánh hai mảng số nguyên array1 và array
- array1.equals(array);
- // Gán giá trị cho các phần tử trong mảng array1
- Arrays.fill(array1, 10); // 10, 10, 10, 10, 10
- // Sao chép mảng array1 sang array2
- int[] arr2 = Arrays.copyOf(arr1, 6); // 10 10 10 10 10 0
hạn chế mảng:
•Mảng
có kích cỡ và số chiều cố định nên khó khăn trong việc mở rộng ứng dụng.
- •Các phần tử được đặt và tham chiếu một cách liên tiếp nhau trong bộ nhớ nên khó khăn cho việc xóa một phần tử ra khỏi mảng.
Khác nhau giữa Array và ArrayList
Sự khác biệt giữa Array và ArrayList là câu hỏi phổ biến cho người mới bắt đầu đặc biệt là những người bắt đầu với code trong C và C++ và thích sử dụng Array. Cả hai Array và ArrayList được sử dụng để lưu trữ các phần tử hoặc đối tượng. Chính sự khác biệt giữa Array và ArrayList trong Java là tính chất tĩnh của Array và tính chất động của ArrayList. Sau khi tạo ra bạn không thể thay đổi kích thước của Array nhưng ArrayList có thể đặt lại kích thước chính nó khi cần thiết. Một khác biệt đáng chú ý giữa ArrayList và Array, Array là một phần lõi lập trình Java và có cú pháp và ngữ nghĩa đặc biệt hỗ trợ Java, ArrayList là một phần của Collection framework cùng với các lớp phổ biến khác như Vector, Hashtable, HashMap hoặc LinkedList.
Array và ArrayList trong Java
Đầu tiên sự khác biệt chính giữa Array và ArrayList trong Java, Array là cấu trúc dữ liệu chiều dài cố định trong khi ArrayList là biến chiều dài lớp Collestion. Bạn không thể thay đổi chiều dài của Array được tạo ra trong Java nhưng ArrayList định lại kích thước chính nó tùy thuộc vào năng lực và hệ số tải. Từ ArrayList là nội bộ được hỗ trợ bởi mảng trong Java, bất kỳ hoạt động thay đổi kích thước trong ArrayList sẽ làm chậm hiệu suất vì nó liên quan đến việc tạo ra mảng mới và sao chép nội dung từ mảng cũ sang mảng mới.
2) Một sự khác biệt giữa Array và ArrayList trong Java là không thể sử dụng Generics cùng với Array, như ví dụ mảng về các loại kiểu của nó có thể giữ và ném ArrayStoreException, nếu bạn cố gắng để lưu trữ kiểu đó là không thể chuyển thành kiểu Array. ArrayList cho phép sử dụng Generics để đảm bảo kiểu an toàn.
3) Tất cả các kiểu mảng cung cấp chiều dài biến biểu thị chiều dài của mảng ArrayList trong khi cung cấp phương thức size() để tính toán kích thước của ArrayList trong Java.
4) Một trong nhiều sự khác biệt lớn giữa ArrayList và Array là bạn không thể lưu trữ nguyên thủy trong ArrayList, nó chỉ có thể chứa các đối tượng. Trong khi mảng có thể chứa cả nguyên thủy và đối tượng trong Java. Mặc dù autoboxing của Java có thể cung cấp lưu trữ nguyên thủy trong ArrayList, nó thực sự tự động chuyển đổi nguyên thủy đến đối tượng.
Ví dụ:
ArrayList<Integer> integerList = new ArrayList<Integer>();
integerList.add(1); //here we are not storing primitive in ArrayList, instead autoboxing will convert int primitive to Integer object
5) Java cung cấp phương thức add() để chèn phần tử vào ArrayList và bạn chỉ có thể sử dụng toán tử gán để lưu trữ phần tử vào mảng
Ví dụ: Để lưu trữ đối tượng đến vị trí cụ thể sử dụng
Object[] objArray = new Object[10];objArray[1] = new Object();
6) Một sự khác biệt thêm về Array vs ArrayList là có thể tạo ra instance của ArrayList mà không xác định kích thước, Java sẽ tạo ArrayList với kích thước mặc định nhưng bắt buộc cung cấp kích thước của mảng trong khi tạo ra cách trực tiếp hoặc gián tiếp bằng cách khởi tạo mảng khi tạo ra nó. Bằng cách này bạn cũng có thể khởi tạo ArrayList.
Đó là tất cả về sự khác biệt giữa mảng và ArrayList trong Java. Xét về hiệu suất Array và ArrayList cung cấp hiệu suất tương tự về thời gian liên tục để thêm hoặc nhận được yếu tố nếu biết chỉ số. Mặc dù tự động thay đổi kích thước của ArrayList có thể làm chậm chèn một chút
Nhận xét
Đăng nhận xét