JavaRush /Blog Java /Random-VI /Nghỉ giải lao #185. Hướng dẫn toàn diện về Khung sưu tập ...

Nghỉ giải lao #185. Hướng dẫn toàn diện về Khung sưu tập Java

Xuất bản trong nhóm
Nguồn: Medium Hướng dẫn này sẽ giúp bạn hiểu rõ hơn về hoạt động của các lớp và giao diện khác nhau có trong Khung công tác sưu tập Java. Nghỉ giải lao #185.  Hướng dẫn toàn diện về Java Collection Framework - 1Bộ sưu tập Java là một khung cung cấp kiến ​​trúc thống nhất để lưu trữ và quản lý một nhóm đối tượng. Về cốt lõi, nó là một tập hợp các lớp và giao diện cung cấp một cách tiêu chuẩn để biểu diễn và thao tác các tập hợp đối tượng bằng ngôn ngữ Java. Khung này cũng giúp triển khai các cấu trúc dữ liệu thường được sử dụng như Danh sách, Tập hợp và Bản đồ. Khung công tác sưu tập Java bao gồm một số giao diện và lớp. Dưới đây là danh sách một số trong số họ:

Giao diện

Các giao diện trong Khung công tác sưu tập Java xác định hành vi và hoạt động chung có thể được thực hiện trên các bộ sưu tập. Điều này bao gồm thêm hoặc xóa các mục, lặp lại các mục trong bộ sưu tập, v.v.
  • Bộ sưu tập : Giao diện gốc trong hệ thống phân cấp bộ sưu tập, đại diện cho một nhóm đối tượng được gọi là phần tử.
  • Danh sách : Một tập hợp các phần tử được sắp xếp theo thứ tự cho phép sao chép.
  • Set : tập hợp các phần tử không cho phép trùng lặp.
  • Bản đồ : tập hợp các cặp khóa-giá trị, trong đó mỗi khóa là duy nhất.
  • Hàng đợi : Hàng đợi là cấu trúc dữ liệu được sử dụng để lưu trữ các phần tử theo kiểu Nhập trước xuất trước (FIFO).
Danh sách này không bao gồm mọi thứ mà chỉ bao gồm các giao diện được sử dụng nhiều nhất trong Khung công tác sưu tập Java. Bây giờ chúng ta hãy xem xét kỹ hơn về từng người trong số họ.

Bộ sưu tập

Bộ sưu tập là một nhóm các đối tượng được gọi là các phần tử của nó. Đây là một đối tượng có thể chứa các tham chiếu đến các đối tượng khác. Giao diện Bộ sưu tập là gốc của hệ thống phân cấp bộ sưu tập. Đây là giao diện cơ sở cho tất cả các bộ sưu tập trong Khung công tác sưu tập Java. Nó xác định các phương thức cơ bản phải được triển khai trong tất cả các bộ sưu tập, chẳng hạn như add() , Remove()contains() . Đây là một ví dụ về việc sử dụng các bộ sưu tập trong Khung sưu tập Java. Ở đây, giao diện Bộ sưu tập được sử dụng để thêm và xóa các thành phần khỏi bộ sưu tập:
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        // Создаем новую коллекцию
        Collection<String> stringCollection = new ArrayList<>();

        // Добавляем несколько элементов в коллекцию
        stringCollection.add("hello");
        stringCollection.add("world");
        stringCollection.add("foo");
        stringCollection.add("bar");

        // Печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());

        // Удаляем элемент из коллекции
        stringCollection.remove("foo");

        // Опять печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());
    }
}
Đầu ra là:
Số phần tử: 4 Số phần tử: 3
Như bạn có thể thấy, giao diện Bộ sưu tập là một cách đơn giản và thuận tiện để thực hiện các thao tác thông thường với một bộ sưu tập các đối tượng. Nó thường được sử dụng làm điểm bắt đầu khi làm việc với các bộ sưu tập trong Java. Khung công tác sưu tập Java bao gồm một số giao diện xác định hành vi chung cho các loại bộ sưu tập khác nhau. Một số trong số chúng là một phần của nhóm giao diện java.util.Collection :
  • java.util.List
  • java.util.set
  • java.util.Queue

java.util.List

Danh sách là một tập hợp các đối tượng có thứ tự, mỗi phần tử của nó chiếm một vị trí cụ thể trong danh sách. Giao diện Danh sách mở rộng giao diện Bộ sưu tập và thêm một số phương pháp để làm việc với danh sách, chẳng hạn như các phương pháp truy cập các phần tử theo vị trí của chúng trong danh sách và các phương pháp tìm kiếm và sắp xếp danh sách. Danh sách có thể chứa các phần tử trùng lặp , các phần tử này có thể được truy cập theo vị trí của chúng trong danh sách. Dưới đây là ví dụ về cách sử dụng giao diện Danh sách để thêm, xóa và truy cập các mục trong danh sách:
import java.util.List;
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        // Создаем новый список
        List<String> stringList = new ArrayList<>();

        // Добавляем несколько элементов в список
        stringList.add("India");
        stringList.add("UAE");
        stringList.add("London");
        stringList.add("US");

        // Печатаем первый элемент в списке
        System.out.println("First element: " + stringList.get(0));

        // Удаляем второй элемент из списка
        stringList.remove(1);

        // Печатаем второй элемент в списке
        System.out.println("Second element: " + stringList.get(1));
    }
}
Phần kết luận:
Yếu tố thứ nhất: Ấn Độ Yếu tố thứ hai: London
Như được hiển thị ở trên, giao diện Danh sách cung cấp một cách thuận tiện để làm việc với các bộ sưu tập phần tử được sắp xếp. Nó thường được sử dụng khi bạn cần duy trì thứ tự các phần tử trong bộ sưu tập hoặc khi bạn cần truy cập các phần tử theo chỉ mục của chúng trong danh sách.

java.util.Set

Tập hợp trong Khung công tác sưu tập Java là tập hợp các phần tử duy nhất không có thứ tự , không cho phép các phần tử trùng lặp . Giao diện Set mở rộng giao diện Bộ sưu tập và thêm một số phương thức, chẳng hạn như các phương thức để kiểm tra xem một phần tử có nằm trong một tập hợp hay không và các phương thức để thêm và xóa các phần tử khỏi một tập hợp. Dưới đây là ví dụ về cách sử dụng giao diện Set để thêm và xóa các phần tử khỏi một tập hợp trong Khung công tác sưu tập Java:
import java.util.Set;
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        // Создаем новый set
        Set<String> stringSet = new HashSet<>();

        // Добавляем несколько элементов в set
        stringSet.add("Jan");
        stringSet.add("Feb");
        stringSet.add("March");
        stringSet.add("April");

        // Проверяем наличие в set element "March"
        if (stringSet.contains("March")) {
            System.out.println("The set contains the element 'March'");
        }

        // Удаляем элемент "April" из set
        stringSet.remove("April");

        // Опять проверяем наличие element "April" в set
        if (!stringSet.contains("April")) {
            System.out.println("The set no longer contains the element 'April'");
        }
    }
}
Phần kết luận:
Tập hợp chứa phần tử 'March' Tập hợp không còn chứa phần tử 'April'

java.util.Queue

Hàng đợi là một cấu trúc dữ liệu được sử dụng để lưu trữ các phần tử theo thứ tự nhập trước xuất trước (FIFO). Điều này có nghĩa là phần tử đầu tiên được thêm vào hàng đợi sẽ là phần tử đầu tiên bị xóa. Dưới đây là ví dụ về cách sử dụng hàng đợi trong Khung sưu tập Java:
// Creation очереди
Queue<String> queue = new LinkedList<>();

// Добавление элементов в очередь
queue.add("apple");
queue.add("banana");
queue.add("orange");
// Печатаем очередь
System.out.println("Queue: " + queue);
// Удаляем элемент из очереди
String element = queue.remove();
System.out.println("Removed element: " + element);
// Печатаем обновленную очередь
System.out.println("Queue: " + queue);
Trong ví dụ này, chúng tôi đã tạo một hàng đợi chuỗi và thêm ba phần tử vào đó: “táo”, “chuối” và “cam”. Sau đó chúng tôi in hàng đợi để xem trạng thái hiện tại của nó. Tiếp theo, chúng tôi xóa phần tử khỏi hàng đợi và in nó ra bàn điều khiển. Cuối cùng, chúng tôi in hàng đợi đã cập nhật để đảm bảo rằng phần tử đã xóa không còn trong hàng đợi.

Bản đồ

Giao diện java.util.Map trong Khung sưu tập Java được sử dụng để ánh xạ các khóa tới các giá trị. Nó cho phép bạn lưu trữ các phần tử dưới dạng cặp khóa-giá trị và cung cấp các phương thức để truy cập, sửa đổi và lặp lại các phần tử trong bản đồ. Dưới đây là ví dụ sử dụng giao diện Map :
// Создаем Map
 Map<String, Integer> map = new  HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
 System.out.println("Map: " + map);
// Получаем meaning для определенного ключа
int  value  = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
 System.out.println( "Map: " + map);
Trong ví dụ này, chúng tôi tạo bản đồ gồm các chuỗi và số nguyên bằng cách thêm ba phần tử vào đó: “táo” khớp với 1, “chuối” khớp với 2 và “cam” khớp với 3. Sau đó, chúng tôi in bản đồ để xem ý nghĩa hiện tại của nó. Sau đó, chúng ta lấy giá trị của khóa “banana” và in nó ra bàn điều khiển. Cuối cùng, chúng tôi xóa cặp khóa-giá trị cho “màu cam” khỏi bản đồ và in bản đồ đã cập nhật để thấy rằng phần tử đã xóa không còn ở đó nữa.

Các lớp học

Lớp là một triển khai cụ thể của giao diện bộ sưu tập. Nó cung cấp các triển khai cụ thể về các hành vi và hoạt động phổ biến được xác định bởi các giao diện trong khung.
  • ArrayList : Việc triển khai giao diện Danh sách với một mảng có thể thay đổi kích thước.
  • LinkedList : một danh sách liên kết đôi, triển khai giao diện ListDeque .
  • HashSet : Việc triển khai Set sử dụng bảng băm để lưu trữ.
  • TreeSet : Việc triển khai Set sử dụng cây để lưu trữ.
  • HashMap : Việc triển khai Map sử dụng bảng băm để lưu trữ.
Danh sách trên là một trong những lớp được sử dụng phổ biến nhất trong Java Collection Framework. Bây giờ chúng ta hãy xem giải thích chi tiết về các lớp này.

Lập danh sách

Lớp java.util.ArrayList trong bộ sưu tập Java được sử dụng để lưu trữ một mảng phần tử có thể thay đổi kích thước trong danh sách. Đây là một triển khai được sử dụng rộng rãi của giao diện java.util.List , sử dụng một mảng để lưu trữ các phần tử và cung cấp các phương thức hiệu quả để truy cập, sửa đổi và lặp qua các phần tử trong danh sách. Lớp java.util.ArrayList cung cấp khả năng truy cập ngẫu nhiên nhanh chóng vào các phần tử của nó, nhưng việc chèn và xóa chậm ở các vị trí ngẫu nhiên. Dưới đây là một ví dụ về cách sử dụng lớp ArrayList trong Java Collection Framework:
// Создаем array list
List<String> list = new ArrayList<>();
// Добавляем элементы в array list
list.add("qa");
list.add("devops");
list.add("dev");
// Печатаем array list
System.out.println("Array list: " + list);
// Доступ к элементу по определенному индексу
String element = list.get(1);
System.out.println("Element at index 1: " + element);
// Удаление element из the array list
list.remove(1);
// Print the updated array list
System.out.println("Array list: " + list);
Như bạn có thể thấy, chúng tôi đã tạo một mảng các chuỗi và thêm ba phần tử vào đó: “qa”, “devops” và “dev”. Sau đó chúng tôi in danh sách mảng để xem trạng thái hiện tại của nó. Sau đó, chúng ta truy cập phần tử ở chỉ mục 1 và in nó ra bàn điều khiển. Cuối cùng, chúng tôi xóa phần tử ở chỉ mục 1 khỏi danh sách mảng và in danh sách mảng được cập nhật để đảm bảo rằng phần tử bị xóa không còn trong danh sách.

Danh sách liên kết

Lớp java.util.LinkedList trong Khung sưu tập Java kế thừa từ lớp Tóm tắt và triển khai các giao diện ListDeque . Nó cung cấp các phương pháp hiệu quả để thêm, xóa và truy cập các phần tử ở đầu và cuối danh sách. Lớp này cũng là một triển khai của giao diện Danh sách , sử dụng danh sách liên kết đôi để lưu trữ các phần tử. Nó cung cấp khả năng chèn và xóa nhanh ở các vị trí tùy ý, nhưng truy cập ngẫu nhiên chậm vào các phần tử của nó. Đây là một ví dụ về cách sử dụng lớp LinkedList trong Khung sưu tập Java:
// Создаем linked list
List<String> list = new LinkedList<>();
// Добавляем элементы в linked list
list.add("selenium");
list.add("cypress");
list.add("playwright");
// Печатаем linked list
System.out.println("Linked list: " + list);
// Добавляем элемент в начало списка
list.add(0, "webdriver.io");
// Печатаем обновленный linked list
System.out.println("Linked list: " + list);
// Удаляем первый элемент в списке
list.remove(0);
// Еще раз печатаем обновленный linked list
System.out.println("Linked list: " + list);
Trong ví dụ này, chúng tôi đã tạo một danh sách các chuỗi được liên kết và thêm ba phần tử vào đó: “selenium”, “cây bách” và “nhà viết kịch”. Sau đó chúng tôi in danh sách liên kết để xem trạng thái hiện tại của nó. Tiếp theo, chúng ta thêm phần tử “webdriver.io” vào đầu danh sách và in danh sách liên kết đã cập nhật. Cuối cùng, chúng ta xóa phần tử đầu tiên khỏi danh sách và in lại danh sách liên kết đã cập nhật để thấy phần tử đã xóa không còn trong danh sách.

Bộ băm

Lớp java.util.HashSet trong Khung sưu tập Java được sử dụng để lưu trữ một tập hợp các phần tử duy nhất trong một tập hợp. Nó cung cấp cách triển khai dựa trên bảng băm của giao diện java.util.Set . Nó cũng cung cấp tính năng chèn, xóa và tìm kiếm nhanh chóng nhưng không giữ nguyên thứ tự các phần tử của nó. Dưới đây là ví dụ về cách sử dụng lớp HashSet trong Khung sưu tập Java:
// Создаем hash set
Set<String> set = new HashSet<>();

// Добавляем элементы в hash set
set.add("rose");
set.add("lily");
set.add("lotus");
// Попытка добавить повторяющийся элемент
set.add("rose");
// Печатаем hash set
System.out.println("Hash set: " + set);
// Удаляем элемент из hash set
set.remove("lily");
// Печать обновленного hash set
System.out.println("Hash set: " + set);
Ở đây, chúng tôi đã tạo một tập hợp các chuỗi băm và thêm ba phần tử vào đó: “hoa hồng”, “hoa huệ” và “hoa sen”. Sau đó, chúng tôi cố gắng thêm phần tử “rose” một lần nữa, nhưng vì bộ băm không cho phép trùng lặp nên nó sẽ không được thêm vào. Sau đó, chúng tôi in bộ băm để xem trạng thái hiện tại của nó. Sau đó, chúng tôi xóa phần tử “lily” khỏi tập hợp và in hàm băm được cập nhật của tập hợp để thấy rằng phần tử bị xóa không còn trong tập hợp nữa.

Bộ cây

Lớp java.util.TreeSet trong Khung sưu tập Java được sử dụng để lưu trữ một tập hợp các phần tử duy nhất trong một tập hợp được sắp xếp theo thứ tự tăng dần. Nó cung cấp cách triển khai dựa trên cây của giao diện java.util.Set để lưu trữ các phần tử mà không cho phép các phần tử trùng lặp. Lớp này cung cấp tính năng chèn, xóa và tìm kiếm nhanh chóng, đồng thời duy trì thứ tự các phần tử của nó theo thứ tự tự nhiên hoặc bộ so sánh của chúng. Đây là một ví dụ về cách sử dụng lớp TreeSet trong Khung công tác sưu tập Java:
// Создаем tree set
Set<String> set = new TreeSet<>();

// Добавляем элементы в tree set
set.add("apple");
set.add("banana");
set.add("orange");
// Попытка добавить повторяющийся элемент
set.add("apple");
// Печатаем tree set
System.out.println("Tree set: " + set);
// Удаляем элемент из tree set
set.remove("banana");
// Печатаем обновленный tree set
System.out.println("Tree set: " + set);
Trong ví dụ này, chúng ta tạo một tập hợp cây gồm các chuỗi và thêm ba phần tử vào đó: “táo”, “chuối” và “cam”. Sau đó, chúng tôi cố gắng thêm lại phần tử “quả táo”, nhưng vì bộ cây không cho phép trùng lặp nên nó sẽ không được thêm vào. Sau đó, chúng ta in tập hợp cây để xem trạng thái hiện tại của nó. Vì tập hợp cây được sắp xếp theo thứ tự tăng dần nên các phần tử sẽ được in theo thứ tự: “táo”, “chuối” và “cam”. Sau đó, chúng tôi xóa phần tử “banana” khỏi tập hợp và in tập hợp cây đã cập nhật để thấy rằng phần tử đã bị xóa không còn trong tập hợp nữa.

Bản đồ băm

Lớp java.util.HashMap trong Java Collection Framework được sử dụng để lưu trữ ánh xạ của các khóa tới các giá trị trong bản đồ. Nó cung cấp triển khai dựa trên bảng băm của giao diện java.util.Map và cho phép các phần tử được lưu trữ dưới dạng cặp khóa-giá trị. Lớp này cung cấp tính năng chèn, xóa và tìm kiếm nhanh nhưng không giữ nguyên thứ tự các phần tử của nó. Dưới đây là ví dụ về cách sử dụng lớp HashMap trong Khung sưu tập Java:
// Создаем hash map
Map<String, Integer> map = new HashMap<>();

// Добавляем элементы в hash map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печатаем hash map
System.out.println("Hash map: " + map);
// Получаем meaning для определенного ключа
int value = map.get("banana");
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из hash map
map.remove("orange");
// Печатаем обновленный hash map
System.out.println("Hash map: " + map);
Trong ví dụ này, chúng tôi tạo một bản đồ băm gồm các chuỗi số nguyên và thêm ba phần tử vào đó: “apple” khớp với 1, “chuối” khớp với 2 và “cam” khớp với 3. Sau đó, chúng tôi in bản đồ băm để xem trạng thái hiện tại. Sau đó, chúng ta lấy giá trị của khóa “banana” và in nó ra bàn điều khiển. Cuối cùng, chúng tôi xóa cặp khóa-giá trị cho “màu cam” khỏi bản đồ băm và in bản đồ băm đã cập nhật để thấy rằng phần tử đã xóa không còn trong đó nữa.

Phần kết luận

Khung công tác sưu tập Java là một tập hợp các lớp và giao diện cung cấp một cách tiêu chuẩn để biểu diễn và thao tác các tập hợp đối tượng bằng ngôn ngữ lập trình Java. Điều này cho phép các nhà phát triển/người thử nghiệm làm việc với các bộ sưu tập đối tượng một cách nhất quán và hiệu quả. Khung này cung cấp cho họ các phương thức để lưu trữ, truy cập và quản lý các mục trong bộ sưu tập, đồng thời cho phép họ dễ dàng chuyển đổi giữa các cách triển khai bộ sưu tập khác nhau tùy thuộc vào yêu cầu của ứng dụng.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION