Java EnumSet là gì? Khám phá thêm thông tin ngay
05/08/2022 04:24
Nếu bạn muốn triển khai giao diện Đặt với kiểu liệt kê, thì bạn phải sử dụng EnumSet trong Java . Cùng tìm hiểu thêm thông tin về Java Enumset ngay sau đây.
Java là một trong những ngôn ngữ lập trình phổ biến nhất được sử dụng để xây dựng nhiều loại ứng dụng . Trong khi xây dựng các ứng dụng, chúng ta thường sử dụng các kiểu liệt kê để phục vụ một nhóm các hằng số được đặt tên. Tuy nhiên, nếu bạn muốn triển khai giao diện Đặt với kiểu liệt kê, thì bạn phải sử dụng EnumSet trong Java . Cùng tìm hiểu thêm thông tin về Java Enumset ngay sau đây.
Java EnumSet là gì?
EnumSet là một triển khai của tập hợp Đặt để làm việc với kiểu enum . EnumSet mở rộng từ AbstractSet và triển khai giao diện Set. Sau đây là một số điểm quan trọng bạn cần hiểu về EnumSet trong Java:
- Chỉ chứa các giá trị enum thuộc cùng một kiểu liệt kê
- Nó là một thành viên của khuôn khổ bộ sưu tập Java
- Cung cấp triển khai tập hợp hiệu suất cao và không được đồng bộ hóa
- Nó không cho phép người dùng thêm giá trị NULL và ném một NullPointerException
- Các phần tử được lưu trữ theo thứ tự chúng được lưu
- Sử dụng phép lặp không an toàn, có thể được sử dụng để đảm bảo rằng ConcurrentModificationException được ném
Bạn có thể khai báo Java EnumSet theo cách sau
public abstract class EnumSet<E extends Enum <E>>
Phương thức của EnumSet
Các phương pháp khác nhau được cung cấp bởi Java EnumSet như sau:
Phương pháp | Modifier and Type | Sự mô tả |
of(E e1) | static <E expand Enum <E>> EnumSet <E> |
Được sử dụng để tạo một tập hợp enum ban đầu có chứa phần tử được đề cập tức là e1. |
ofE e1, E e2) | static <E expand Enum <E>> EnumSet <E> |
Được sử dụng để tạo một tập hợp enum ban đầu chứa các phần tử được đề cập. Đây, nó là e1, e2. |
range (E từ, E đến) | static <E expand Enum <E>> EnumSet <E> |
Được sử dụng để tạo một tập hợp enum ban đầu chứa tất cả các phần tử trong phạm vi được xác định bởi hai điểm cuối được đề cập.
|
allOf ( Class <E> elementType) | static <E expand Enum <E>> EnumSet <E> |
Được sử dụng để tạo một tập hợp enum chứa tất cả các phần tử trong loại phần tử menioned. |
copyOf ( Bộ sưu tập <E> c) | static <E expand Enum <E>> EnumSet <E> |
Được sử dụng để tạo một tập hợp enum được khởi tạo từ bộ sưu tập được đề cập. |
copyOf ( EnumSet <E> s) | static <E expand Enum <E>> EnumSet <E> |
Được sử dụng để tạo một tập hợp enum có cùng kiểu phần tử với tập hợp enum đã đề cập, ban đầu chứa các phần tử giống nhau (nếu có). |
addOf ( EnumSet <E> s) | static <E expand Enum <E>> EnumSet <E> |
Được sử dụng để tạo một tập hợp enum có cùng kiểu phần tử với tập hợp enum đã đề cập, ban đầu chứa tất cả các phần tử của kiểu này không được chứa trong tập xác định. |
noneOf ( Class <E> elementType) | static <E expand Enum <E>> EnumSet <E> |
Tp được sử dụng tạo một tập hợp enum trống với kiểu phần tử được chỉ định. |
clone () | EnumSet <E> | Được sử dụng để trả lại một bản sao của bộ này. |
Lưu ý: Bạn có thể sử dụng phương thức of () tối đa 5 tham số. Vì vậy, bạn có thể cate một tập hợp enum ban đầu chứa các phần tử được chỉ định như sau:
- of(E e1, E e2, E e3)
- of(E e1, E e2, E e3, E e4)
- of(E e1, E e2, E e3, E e4, E e5)
Operations của Java EnumSet
Để giải thích cho bạn các hoạt động của EnumSet, tôi sẽ xem xét đoạn mã sau. Đoạn mã này chứa một tập hợp các giá trị enum [DevOps, Big Data, Python, Data Science, RPA]. Trong phần sau của mã, tôi sẽ chỉ cho bạn cách sử dụng các phương pháp khác nhau theo trình tự sau:
- of(E e1)
- of(E e1, E e2)
- of(E e1, E e2, E e3)
- of(E e1, E e2, E e3, E e4)
- of(E e1, E e2, E e3, E e4, E e5)
- range(E from, E to)
- allOf(Class<E> elementType)
- copyOf(Collection<E> c)
- copyOf(EnumSet<E> s)
- complementOf(EnumSet<E> s)
- noneOf(Class<E> elementType)
- clone()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package edureka;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumSet;
enum Courses
{
DevOps, BigData, Python, DataScience, RPA
};
public class Example {
public static void main(String[] args)
{
// Create an EnumSet
EnumSet<Courses> sample_set;
//of method
// Add single element
sample_set = EnumSet.of(Courses.DevOps);
// Display the set
System.out.println("The EnumSet after adding a single element is: " + sample_set);
// Add two elements
sample_set = EnumSet.of(Courses.DevOps, Courses.BigData);
// Display the set
System.out.println("The EnumSet after adding two elements is: " + sample_set);
// Add three elements
sample_set = EnumSet.of(Courses.DevOps, Courses.BigData, Courses.Python);
// Display the set
System.out.println("The EnumSet after adding three elements is: " + sample_set);
// Add four elements
sample_set = EnumSet.of(Courses.DevOps, Courses.BigData, Courses.Python, Courses.DataScience);
// Display the set
System.out.println("The EnumSet after adding four elements is: " + sample_set);
// Add five elements
sample_set = EnumSet.of(Courses.DevOps, Courses.BigData, Courses.Python, Courses.DataScience,Courses.RPA);
// Display the set
System.out.println("The EnumSet after adding five elements is: " + sample_set);
//Range method
sample_set = EnumSet.range(Courses.BigData, Courses.DataScience);
// Display the set
System.out.println("The range of the EnumSet is: " + sample_set);
//allOf method
sample_set = EnumSet.allOf(Courses.class);
// Display the set
System.out.println("All the elements in the EnumSet are: " + sample_set);
//copyOf(Collection) method
// Create an empty collection
Collection<Courses> samplecollection = new ArrayList<Courses>();
// Add elements to the samplecollection
samplecollection.add(Courses.DevOps);
samplecollection.add(Courses.BigData);
samplecollection.add(Courses.Python);
// Display the sample collection set
System.out.println("Elements in the sample collection set are: " + samplecollection);
//Create a new EnumSet to store the collection items
EnumSet<Courses> final_enumset = EnumSet.copyOf(samplecollection);
// Display the EnumSet
System.out.println("Elements in the EnumSet are: " + final_enumset);
//copyOf(EnumSet) method
// Get all the elements from Courses
EnumSet<Courses> example_set = EnumSet.allOf(Courses.class);
// Display the initial EnumSet(sample_set)
System.out.println("The elements in the initial EnumSet are: " + example_set);
// Copy the elements from the above set
EnumSet<Courses> final_set = EnumSet.copyOf(example_set);
// Display the elements in the copied EnumSet
System.out.println("The elements in the copied EnumSet are: " + final_set);
//complementOf method
//Sample Set
sample_set = EnumSet.of(Courses.DevOps, Courses.BigData, Courses.Python);
//Create an EnumSet
EnumSet<Courses> complement_set;
//Complement the above set
complement_set = EnumSet.complementOf(sample_set);
// Display the elements in the complement EnumSet
System.out.println("The elements in the complement EnumSet are: " + complement_set);
//noneOf method
// Create empty set
EnumSet<Courses> none_example_set = EnumSet.noneOf(Courses.class);
// Display the elements in the set
System.out.println("EnumSet consists of the elements: " + none_example_set);
//clone method
EnumSet<Courses> final_clone_set = sample_set.clone();
//Display the EnumSet
System.out.println("The clone set consists of the elements:" + final_clone_set);
}
}
Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
The EnumSet after adding a single element is: [DevOps]
The EnumSet after adding two elements is: [DevOps, BigData]
The EnumSet after adding three elements is: [DevOps, BigData, Python]
The EnumSet after adding four elements is: [DevOps, BigData, Python, DataScience]
The EnumSet after adding five elements is: [DevOps, BigData, Python, DataScience, RPA]
The range of the EnumSet is: [BigData, Python, DataScience]
All the elements in the EnumSet are: [DevOps, BigData, Python, DataScience, RPA]
Elements in the sample collection set are: [DevOps, BigData, Python]
Elements in the EnumSet are: [DevOps, BigData, Python]
The elements in the initial EnumSet are: [DevOps, BigData, Python, DataScience, RPA]
The elements in the copied EnumSet are: [DevOps, BigData, Python, DataScience, RPA]
The elements in the complement EnumSet are: [DataScience, RPA]
EnumSet consists of the elements: []
The clone set consists of the elements:[DevOps, BigData, Python]