Chào các em, trong những bài trước anh đã giới thiệu về các tập hợp trong lập trình Java bao gồm List , Vector, Set, Queue, Deque, Map.
Bài viết hôm nay anh sẽ tổng hợp lại các tập hợp trong bộ Java Collection mà chúng ta thường xuyên sử dụng trong lập trình Java. Phân biệt sự khác nhau giữa các tập hợp và giúp các em nhận biết được khi nào thì nên sử dụng chúng. Anh cũng sẽ trình bày về phần performance (hiệu năng) cũng như từng loại tập hợp giúp các em có thể tìm ra được tập hợp tốt nhất để áp dụng vào cho bài toán của mình trong quá trình code các chương trình lập trình hướng đối tượng Java.
Là một cấu trúc dữ liệu có thứ tự (đôi khi còn được gọi là một chuỗi). List có thể chứa các phần tử trùng lặp. Thường có quyền kiểm soát chính xác vị trí các phần tử được chèn vào và có thể truy cập chúng bằng chỉ số (vị trí của chúng).
1
2
3
4
List<String> list = new ArrayList<String>();
list.add("Le Vu Nguyen ");
list.add("Java ");
list.add("Collection List ");
Là một cấu trúc dữ liệu có thể chứa các phần tử trùng lặp. Duy trì thứ tự của phần tử được thêm vào. Vector là synchronized.
1
2
3
Vector<String> list3 = new Vector<String>();
list3.add("Le Vu Nguyen ");
list3.add("Collection");
Là một cấu trúc dữ liệu không thể chứa 2 giá trị trùng lặp.
1
2
3
4
Set<Integer> hashsetInteger = new HashSet<>();
hashsetInteger.add(1);
hashsetInteger.add(2);
hashsetInteger.add(3);
Là một cấu trúc dữ liệu được sử dụng để chứa nhiều phần tử trước khi xử lý. Bên cạnh các thao tác cơ bản của collection, Là tập hợp cho phép các phần tử trùng lặp, Không cho phép phần tử null Queue cung cấp các thao tác bổ sung như chèn, lấy ra và kiểm tra. Queue có thể được sử dụng như là FIFO (first-in, first-out - vào trước, ra trước).
1
2
3
4
Queue<String> names = new LinkedList<String>();
names.add("Le Vu Nguyen");
names.add("Qu");
Là một cấu trúc dữ liệu cung cấp các thao tác bổ sung như chèn, lấy ra và kiểm tra. Deque có thể được sử dụng như là FIFO (first-in, first-out - vào trước, ra trước) và LIFO (last-in, first-out - vào sau, ra trước). Trong một Deque, tất cả các phần tử mới có thể được chèn vào, lấy ra và lấy ra ở cả hai đầu.
1
2
3
4
5
6
7
Deque<String> deque = new LinkedList<String>();
deque.add("Nguyên "); // add vào đuôi
deque.addFirst("Le Vu ");
deque.addLast("Deque");
deque.push("Name (Head)"); //add vào đầu
deque.offer("Age 5 (Tail)");
Là một đối tượng ánh xạ mỗi key tương ứng với một giá trị. Map không thể chứa giá trị trùng lặp. Mỗi key có thể ánh xạ đến nhiều nhất một giá trị.
1
2
3
4
5
6
7
Map<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "One");
hashMap.put(0, "Zero");
hashMap.put(2, "Two");
hashMap.put(4, "Four");
hashMap.put(21, "Twenty first");
hashMap.put(5, "Five");
Collections trong java là kiến trúc để lưu trữ và thao tác với nhóm các đối tượng. Tất cả các hoạt động mà bạn thực hiện trên một dữ liệu như tìm kiếm, phân loại, chèn, xóa,… có thể được thực hiện bởi Java Collections.
Java Collection cung cấp nhiều interface (Set, List, Queue, Deque vv) và các lớp (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet vv).
HashSet không duy trì thứ tự nào, trong khi TreeSet duy trì thứ tự tăng dần
HashMap duy trì không có thứ tự, trong khi TreeMap duy trì thứ tự tăng dần.
Set chỉ chứa giá trị, trong khi Map chứa cặp key và value.