Trong lập trình Java, Set
là một giao diện (interface) nằm trong gói java.util
. Set
là một trong những giao diện mở rộng từ giao diện Collection
, và nó đại diện cho một tập hợp các phần tử không có thứ tự (unordered) và không chứa các phần tử trùng lặp.
Set
không chứa các phần tử trùng lặp, do đó khi bạn thêm một phần tử vào Set
mà đã tồn tại trong Set
, nó sẽ không thay đổi tập hợp và không có phản hồi nào. Set
thường được sử dụng để duy trì một danh sách các phần tử duy nhất.
Dưới đây là một số phương thức quan trọng của giao diện Set
:
boolean add(E element)
: Thêm một phần tử vàoSet
. Trả vềtrue
nếu phần tử chưa tồn tại trongSet
, ngược lại trả vềfalse
.boolean remove(Object o)
: Xóa một phần tử khỏiSet
nếu nó tồn tại. Trả vềtrue
nếu phần tử đã được xóa, ngược lại trả vềfalse
.boolean contains(Object o)
: Kiểm tra xem phần tử có tồn tại trongSet
hay không.int size()
: Trả về số lượng phần tử trongSet
.boolean isEmpty()
: Kiểm tra xemSet
có rỗng không.void clear()
: Xóa toàn bộ phần tử khỏiSet
.Iterator<E> iterator()
: Trả về mộtIterator
để duyệt qua các phần tử trongSet
.
Các lớp cụ thể trong Java như HashSet
và TreeSet
đều triển khai giao diện Set
. Mỗi lớp cụ thể này cung cấp một cách cụ thể để triển khai các phương thức của Set
, nhưng tất cả đều đảm bảo tính chất không có thứ tự và không chứa các phần tử trùng lặp.
Dưới đây là ví dụ về cách sử dụng giao diện Set
và lớp cụ thể HashSet
:
java
import java.util.Set;
import java.util.HashSet;
public class SetExample {
public static void main(String[] args) {
Set<String> names = new HashSet<>();
// Thêm các phần tử vào Set
names.add("Alice");
names.add("Bob");
names.add("Charlie");
names.add("Alice"); // Phần tử đã tồn tại, sẽ không thêm vào lại
// Xóa một phần tử khỏi Set
names.remove("Charlie");
// Kiểm tra xem Set có chứa một phần tử cụ thể hay không
System.out.println("Contains Bob: " + names.contains("Bob")); // Output: Contains Bob: true
// Kích thước của Set
System.out.println("Size of set: " + names.size()); // Output: Size of set: 2
// Kiểm tra xem Set có rỗng không
System.out.println("Is set empty: " + names.isEmpty()); // Output: Is set empty: false
// In ra danh sách các phần tử trong Set
for (String name : names) {
System.out.println(name);
}
/* Output:
Alice
Bob
*/
// Xóa toàn bộ phần tử trong Set
names.clear();
System.out.println("After clearing: " + names); // Output: After clearing: []
}
}
Set
là một giao diện hữu ích trong Java, cho phép bạn làm việc với các tập hợp không có thứ tự và không chứa phần tử trùng lặp. Bạn có thể sử dụng các lớp cụ thể triển khai nó như HashSet
, TreeSet
, để quản lý các tập hợp dữ liệu duy nhất trong ứng dụng của mình.