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.
Nội dung chính
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:
- Hashset
- LinkedHashset
- Enum set
- TreeSet
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.