× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

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]