Bạn đang tìm hiểu về Java hay chỉ đơn giản là tìm hiểu Set trong Java là gì, đừng bỏ qua bài viết này. Trong bài viết này. Mẫu Website 24h sẽ giải thích về Set trong Java là gì? Hướng dẫn thao tác với Set trong Java.
Set trong Java là gì?
Set trong java là một Interface trong bộ collection của Java, nó được dùng để lưu trữ các phần tử hoặc các đối tượng giống như List Interface trong Java. Tuy nhiên, set chỉ cho phép lưu trữ các thành phần có thứ tự và không được lặp lại, điều đó có nghĩa các phần tử bên trong set là giá trị duy nhất giống như hằng số.
Set trong Interface được sử dụng lại Collection Interface và những phương thức của chúng để ngăn chặn việc chèn các phần tử giống nhau.
Lớp SortedSet() và lớp NavigableSet() là hai Intertface kế thừa của nó và chúng ta hoàn toàn có thể sử dụng để triển khai một Set khi được khởi tạo. Ngoài ra ta cũng có thể sử dụng lớp LinkedHashSet() hoặc lớp HashSet() để có thể triển khai một Set mới được khởi tạo.
Set được triển khai bởi Hashset, LinkedHashset, Treeset hay EnumSet.
- HashSet lưu trữ các phần tử của nó trong bảng băm (hash tables), là cách thực hiện tốt nhất, tuy nhiên nó không đảm bảo về thứ tự các phần tử được chèn vào.
- TreeSet lưu trữ những phần tử của nó trong một cây, sắp xếp các phần tử của nó dựa trên các giá trị của chúng, về cơ bản là chậm hơn HashSet.
- LinkedHashSet được triển khai dưới dạng bảng băm với có cấu trúc dữ liệu danh sách liên kết, sắp xếp các phần tử của nó dựa trên thứ tự chúng được chèn vào tập hợp (thứ tự chèn).
- EnumSet là một cài đặt chuyên biệt để sử dụng với các kiểu enum.
Chúng ta có thể dễ dàng tìm thấy Set trong thư viện java.util và để sử dụng được kiểu Set trong Java ta chỉ cần nhập thư viện:
Khai báo Set trong Java
Để có thể khởi tạo hay khai váo được một kiểu Set trong Java ta cần gọi một lớp có tên là Set. Khi khởi tạo một đối tượng Set mới, ta có thể khởi tạo Set và triển khai Interface Set theo các lớp là LinkedHashSet() hay lớp HashSet() – tùy vào các trường hợp khác nhau mà bạn có thể sử dụng các lớp triển khai khác nhau khi khởi tạo Set.
Dưới đây là các ví dụ khởi tạo một Set mới sử dụng lớp LinkedHashSet() và lớp HashSet() để triển khai đó:


Thao tác với Set trong Java
Thao tác với Set như một tập hợp
Khi làm việc với kiểu Set trong Java, ta có thể hoàn toàn có thể sử dụng những phép toán của một tập hợp như: phép hợp và phép trừ, phép giao hoán. Vì các tính chất lưu trữ có thứ tự và không được lặp lại các phần tử nên Set trong Java có thể được xem là một tập hợp (có thể là tập hợp chữ, tập hợp số, tập hợp ký tự,…) đây là lý do mà Set trong Java có thể thực hiện các phép toán của tập hợp.
Như trong một ví dụ dưới đây, tôi có hai Set (hoặc có thể coi là 2 tập hợp). Trong đó, set1 = [22, 45, 33, 66, 55, 34, 77] và set2 = [33, 2, 83, 45, 3, 12, 55] khi đó ta có các phép toán:
- Giao hoán: Trả về tất cả các phần tử có trong cả tập hợp. Giao hoán của set1 và set2 là [33, 45, 55].
- Phép hợp: Trả về tất cả các phần tử của set1 và set2 trong một tập hợp duy nhất và tập hợp đó có thể là set1 hoặc set2. Hợp nhất các phần tử của set1 và set2 sẽ cho ra kết quả là [2, 3, 12, 22, 33, 34, 45, 55, 66, 77, 83].
- Phép trừ: Loại bỏ đi các giá trị khỏi tập hợp có trong một tập hợp khác. Phép toán trừ của set1 trừ set2 sẽ cho ra kết quả [66, 34, 22, 77]. – kết quả này sẽ chỉ giữ lại các phần tử có trong set1 nhưng không có trong set2.
Trong ngôn ngữ lập trình Java và trong Interface Set, phương thức Set.addAll() được sử dụng để thực hiện phép hợp, phương thức Set.retainAll() được sử dụng để thực hiện phép giao nhau giữa hai và phương thức Set.removeAll() được sử dụng để thực hiện phép trừ.
Xem qua ví dụ dưới đây để hiểu rõ hơn về các phép toán trên tập hợp khi sử dụng trong ngôn ngữ lập trình Java thông qua Interface Set:
Kết quả:
Thêm phần tử vào Set trong Java
Phương thức Set.add() được dùng để chèn một giá trị mới vào Set. Phương thức trả về true và false, tùy thuộc vào kết quả của việc chèn phần tử mới vào Set. Nó trả về false nếu phần tử đã có trong tập hợp và trả về true nếu phần tử đó không có trong tập hợp.
Kết quả:
Kiểm tra phần tử có thuộc trong Set
Phương thức Set.contains() được dùng để kiểm tra sự hiện diện của một phần tử trong tập hợp. Giá trị trả về của phương thức này sẽ là true hoặc false tùy thuộc vào sự hiện diện của phần tử có trong Set. Nếu như phần tử có trong Set thì nó trả về true, phần tử không có trong Set trả về false.
Xóa phần tử trong Set
Phương thức Set.remove() được dùng để xóa một phần tử được chỉ định khỏi tập hợp Set. Giá trị trả về của phương thức này phụ thuộc vào việc có xóa phần tử thành công hay không. Nó trả về true nếu phần tử đã được xóa trong tập hợp và trả về false nếu phần tử đó không được xóa trong tập hợp vì không tồn tại nó trong tập hợp.
Kết quả:
Phương thức Set.remove() ở trên chỉ cho phép chúng ta xóa riêng lẻ từng phần tử. Nếu như bạn cần xóa bỏ đi tất các các phần tử có trong Set đó, khi đó bạn sẽ cần sử dụng đến phương thức Set.clear() để thực hiện điều này:
Kết quả:
Duyệt các phần tử trong Set
Phương thức Set.iterator() được dùng để nạp trình lặp của một tập hợp. Trình lặp được sử dụng để lấy từng phần tử một có trong Set. Kết hợp với vòng lặp ta có thêt sử dụng Set.iterator() để duyệt qua tất cả các phần tử có trong Set như sau:
Kết quả:
Các phương thức của Set trong Java
Trong các ví dụ trên, chúng tôi đã giới thiệu cho các bạn một vài phương thức của Set như: Set.add(), Set.remove(), Set.iterator()…Bảng dưới đây sẽ tiếp tục bổ xung thêm một số phương thức để chúng ta dễ dàng hơn khi thao tác với Set trong Java.
Phương thức | Mô tả |
add() | Thêm phần tử vào Set. |
clear() | Xóa tất cả các phần tử trong Set. |
contains() | Kiểm tra phần tử có tồn tại trong Set hay không? Nếu tồn tại trả về true, ngược lại trả về false. |
isEmpty() | Kiểm tra Set có rỗng hay không? |
iterator() | Trả về một đối tượng Iterator cho Collection mà có thể được sử dụng để thu nhận một đối tượng |
remove() | Xóa đi một phần tử được chỉ định trong Set. |
size() | Kiểm tra số lượng phần tử có trong Set. |
Lời kết
Trên đây là tất cả những chia sẻ của Mẫu Website 24h về Set trong Java. Hy vọng sau bài viết này sẽ giúp bạn có thêm những kiến thức bổ ích về Java. Cảm ơn bạn đã đọc những chia sẻ của Mẫu Website 24h, mọi thắc mắc hãy liên hệ với chúng tôi – Dịch vụ thiết kế website hàng đầu.