Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các thuật toán khác nhau được cung cấp bởi framework collection trong Java với sự trợ giúp của các ví dụ.

framework collection trong Java cung cấp các thuật toán khác nhau có thể được sử dụng để thao tác các phần tử được lưu trữ trong cấu trúc dữ liệu.

Các thuật toán trong Java là các phương thức tĩnh có thể được sử dụng để thực hiện các hoạt động khác nhau trên các tập hợp.

Vì các thuật toán có thể được sử dụng trên các bộ sưu tập khác nhau, chúng còn được gọi là thuật toán chung .

Hãy xem việc triển khai các phương thức khác nhau có sẵn trong framework collection.

1. Sắp xếp Sử dụng sort()

phương thức sort() được cung cấp bởi framework collection được sử dụng để các phân loại phần tử. Ví dụ,

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

import java.util.ArrayList;
import java.util.Collections;

class Main {
    public static void main(String[] args) {

        // Creating an array list
        ArrayList<Integer> numbers = new ArrayList<>();

        // Add elements
        numbers.add(4);
        numbers.add(2);
        numbers.add(3);
        System.out.println("Unsorted ArrayList: " + numbers);

        // Using the sort() method
        Collections.sort(numbers);
        System.out.println("Sorted ArrayList: " + numbers);

    }
}

Đầu ra

Unsorted ArrayList: [4, 2, 3]
Sorted ArrayList: [2, 3, 4]

Ở đây việc sắp xếp diễn ra theo thứ tự tự nhiên (thứ tự tăng dần). Tuy nhiên, chúng ta có thể tùy chỉnh thứ tự sắp xếp của phương thức sort() bằng interface Set.

2. Trộn bằng shuffle()

phương thức shuffle()  framework collection trong Java được sử dụng để tiêu diệt bất kỳ loại trật tự hiện diện trong cấu trúc dữ liệu. Nó hoàn toàn ngược lại với việc sắp xếp. Ví dụ,

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

import java.util.ArrayList;
import java.util.Collections;

class Main {
    public static void main(String[] args) {

        // Creating an array list
        ArrayList<Integer> numbers = new ArrayList<>();

        // Add elements
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        System.out.println("Sorted ArrayList: " + numbers);

        // Using the shuffle() method
        Collections.shuffle(numbers);
        System.out.println("ArrayList using shuffle: " + numbers);

    }
}

Đầu ra

Sorted ArrayList: [1, 2, 3]
ArrayList using shuffle: [2, 1, 3]

Khi chúng ta chạy chương trình, phương thức shuffle() sẽ trả về một kết quả ngẫu nhiên.

Thuật toán xáo trộn chủ yếu được sử dụng trong các trò chơi mà chúng ta muốn đầu ra ngẫu nhiên.

3. Thao tác dữ liệu thường xuyên

Trong Java, framework collection cung cấp các phương thức khác nhau có thể được sử dụng để thao tác dữ liệu.

  • reverse() – đảo ngược thứ tự của các phần tử
  • fill() – thay thế mọi phần tử trong tập hợp bằng giá trị được chỉ định
  • copy() – tạo một bản sao của các phần tử từ nguồn được chỉ định đến đích
  • swap() – hoán đổi vị trí của hai phần tử trong một bộ sưu tập
  • addAll() – thêm tất cả các phần tử của một bộ sưu tập vào bộ sưu tập khác

Ví dụ,

import java.util.Collections;
import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // Creating an ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        System.out.println("ArrayList1: " + numbers);

        // Using reverse()
        Collections.reverse(numbers);
        System.out.println("Reversed ArrayList1: " + numbers);

        // Using swap()
        Collections.swap(numbers, 0, 1);
        System.out.println("ArrayList1 using swap(): " + numbers);

        ArrayList<Integer> newNumbers = new ArrayList<>();

        // Using addAll
        newNumbers.addAll(numbers);
        System.out.println("ArrayList2 using addAll(): " + newNumbers);

        // Using fill()
        Collections.fill(numbers, 0);
        System.out.println("ArrayList1 using fill(): " + numbers);

        // Using copy()
        Collections.copy(newNumbers, numbers);
        System.out.println("ArrayList2 using copy(): " + newNumbers);
    }
}

Đầu ra

ArrayList1: [1, 2]
Reversed ArrayList1: [2, 1]
ArrayList1 Using swap(): [1, 2]
ArrayList2 using addALl(): [1, 2]
ArrayList1 using fill(): [0, 0]
ArrayList2 using copy(): [0, 0]

Lưu ý : Trong khi thực hiện phương thức copy() này, cả hai danh sách phải có cùng kích thước.

4. Tìm kiếm bằng binarySearch()

phương thức binarySearch() của Java tìm kiếm framework collection cho các phần tử cụ thể. Nó trả về vị trí của phần tử trong các tập hợp được chỉ định. Ví dụ,

import java.util.Collections;
import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // Creating an ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);

        // Using binarySearch()
        int pos = Collections.binarySearch(numbers, 3);
        System.out.println("The position of 3 is " + pos);
    }
}

Đầu ra

The position of 3 is 2.

Lưu ý : Bộ sưu tập nên được sắp xếp trước khi thực hiện phương thức binarySearch().

Để biết thêm, hãy truy cập Tìm kiếm nhị phân Java .

5. Thành phần

  • frequency() – trả về số lần một phần tử có mặt trong tập hợp
  • disjoint() – kiểm tra xem hai tập hợp có chứa phần tử chung nào không

Ví dụ,

import java.util.Collections;
import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // Creating an ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(2);
        System.out.println("ArrayList1: " + numbers);

        int count = Collections.frequency(numbers, 2);
        System.out.println("Count of 2: " + count);

        ArrayList<Integer> newNumbers = new ArrayList<>();
        newNumbers.add(5);
        newNumbers.add(6);
        System.out.println("ArrayList2: " + newNumbers);

        boolean value = Collections.disjoint(numbers, newNumbers);
        System.out.println("Two lists are disjoint: " + value);
    }
}

Đầu ra

ArrayList1: [1, 2, 3, 2]
Count of 2: 2
ArrayList2: [5, 6]
Two lists are disjoint: true

6. Tìm giá trị cực đoan

Các phương thức min()và max()phương thức của framework collection trong Java được sử dụng để tìm phần tử tối thiểu và tối đa tương ứng. Ví dụ,

import java.util.Collections;
import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        // Creating an ArrayList
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);

        // Using min()
        int min = Collections.min(numbers);
        System.out.println("Minimum Element: " + min);

        // Using max()
        int max = Collections.max(numbers);
        System.out.println("Maximum Element: " + max);
    }
}

Đầu ra

Minimum Element: 1
Maximum Element: 3

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!