Trong bài này, chúng ta sẽ tìm hiểu về Set Interface trong Java và các hàm của nó.

Set Interface của Collections framework trong Java cung cấp các tính năng của thư viện toán học trong Java. Nó mở rộng Collection Interface.

Khác với List Interface, các set không thể chứa các phần tử trùng lặp.

1. Các class triển khai Set

Vì Set là một Interface, chúng ta không thể tạo các đối tượng từ nó.

Để sử dụng các chức năng của Set Interface, chúng ta có thể sử dụng các class sau:

Các class này được định nghĩa trong Collections framework và triển khai Set Interface.

2. Các Interface mở rộng Set

Set Interface cũng được mở rộng bởi những subinterface sau:

  • SortedSet
  • NavigableSet

3. Sử dụng Set như thế nào?

Trong Java, chúng ta phải import gói java.util.Set để sử dụng Set.

// Set implementation using HashSet
Set<String> animals = new HashSet<>();

Ở đây, chúng ta đã tạo ra một Set có tên là animals. Chúng ta đã sử dụng class HashSet để triển khai Set Interface.




4. Các hàm của Set

Set Interface bao gồm tất cả các hàm của Collection Interface. Đó là bởi vì Collection là interface cha của Set.

Một số hàm thường được sử dụng của Collection Interface cũng có sẵn trong Set Interface là:

  • add () – thêm phần tử được chỉ định vào set
  • addAll () – thêm tất cả các phần tử của collection đã chỉ định vào set
  • iterator () – trả về một iterator có thể được sử dụng để truy cập các phần tử của set một cách tuần tự
  • remove () – xóa phần tử đã chỉ định khỏi set
  • removeAll () – xóa tất cả các phần tử khỏi set có trong set đã chỉ định khác
  • retainAll() – giữ lại tất cả các phần tử trong set mà các phần tử này cũng có trong một set đã chỉ định khác
  • clear () – xóa tất cả các phần tử khỏi set
  • size () – trả về độ dài (số phần tử) của set
  • toArray () – trả về một mảng chứa tất cả các phần tử của set
  • chứa () – trả về true nếu set chứa phần tử đã chỉ định
  • chứa All () – trả về true nếu set chứa tất cả các phần tử của collection đã chỉ định
  • hashCode () – trả về 1 giá trị hash code (địa chỉ của phần tử trong set)

Để tìm hiểu thêm về các hàm của Set Interface, hãy truy cập Java Set (tài liệu Java chính thức) .

5. Các toán tử của Set

Set Interface trong Java cho phép chúng ta thực hiện các toán tử set toán học cơ bản như lấy phần hợp, lấy phần giao và tập con.

  • Lấy phần hợp – để lấy phần hợp của hai set x và y, chúng ta có thể sử dụng hàm x.addAll(y)
  • Lấy phần giao – để lấy phần giao của hai set x và y, chúng ta có thể sử dụng hàm x.retainAll(y)
  • tập con – để kiểm tra xem x có phải là một tập con của y hay không, chúng ta có thể sử dụng hàm y.containsAll(x)

6. Triển khai Set Interface 

1. Triển khai class Hashset

/*
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
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.Set;
import java.util.HashSet;

class Main {

    public static void main(String[] args) {
        // Creating a set using the HashSet class
        Set<Integer> set1 = new HashSet<>();

        // Add elements to the set1
        set1.add(2);
        set1.add(3);
        System.out.println("Set1: " + set1);

        // Creating another set using the HashSet class
        Set<Integer> set2 = new HashSet<>();

        // Add elements
        set2.add(1);
        set2.add(2);
        System.out.println("Set2: " + set2);

        // Union of two sets
        set2.addAll(set1);
        System.out.println("Union is: " + set2);
    }
}

Kết quả

Set1: [2, 3]
Set2: [1, 2]
Union is: [1, 2, 3]

Để tìm hiểu thêm về HashSet, hãy truy cập Java Hashset.

2. Triển khai class TreeSet

/*
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
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
*/

import java.util.Set;
import java.util.TreeSet;
import java.util.Iterator;

class Main {

    public static void main(String[] args) {
        // Creating a set using the TreeSet class
        Set<Integer> numbers = new TreeSet<>();

        // Add elements to the set
        numbers.add(2);
        numbers.add(3);
        numbers.add(1);
        System.out.println("Set using TreeSet: " + numbers);

        // Access Elements using iterator()
        System.out.print("Accessing elements using iterator(): ");
        Iterator<Integer> iterate = numbers.iterator();
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }

    }
}

Kết quả

Set using TreeSet: [1, 2, 3]
Accessing elements using iterator(): 1, 2, 3,

Để tìm hiểu thêm về TreeSet, hãy truy cập Java Treeset .




Bây giờ, khi đã biết về Set, chúng ta sẽ thấy việc triển khai của nó đối với các class như EnumSet, HashSet, LinkedHashSet và TreeSet trong các bài tiếp theo.