Перейти к контенту

Как использовать EnumSet в Java?

При создании приложений мы часто используем перечисления для обслуживания группы именованных констант. Но если вы хотите реализовать интерфейс Set с типом перечисления, то вам нужно использовать EnumSet в Java.

Что такое Java EnumSet?

EnumSet в Java — это реализация наборов Set для работы с типом enum. EnumSet расширяется от AbstractSet и реализует интерфейс Set. Ниже приведены несколько важных моментов:

 

  • Содержит только значения перечисления, принадлежащие к тому же типу перечисления
  • Он входит в структуру коллекций Java.
  • Обеспечивает высокую производительность реализации набора и не синхронизируется
  • Он не позволяет пользователю добавлять значения NULL и создает исключение NullPointerException
  • Элементы хранятся в порядке их сохранения
  • Использует отказоустойчивую итерацию, которую можно использовать, чтобы убедиться, что выбрано исключение ConcurrentModificationException.

Вы можете объявить Java EnumSet следующим образом:

Декларация

public abstract class EnumSet<E extends Enum<E>> 

Методы EnumSet

МетодМодификатор и типОписание
of(E e1)static <E extends Enum<E>>
EnumSet<E>
Используется для создания набора перечислений, изначально содержащего упомянутый элемент, т. е. e1.
of(E e1, E e2)static <E extends Enum<E>>
EnumSet<E>
Используется для создания набора перечислений, изначально содержащего указанные элементы. Здесь это Е1, Е2.
range(E from, E to)static <E extends Enum<E>>
EnumSet<E>
Используется для создания набора перечислений, изначально содержащего все элементы в диапазоне, определенном двумя упомянутыми конечными точками.
allOf(Class<E> elementType)static <E extends Enum<E>>
EnumSet<E>
Используется для создания набора перечислений, содержащего все элементы типа menioned element.
copyOf(Collection<E> c)static <E extends Enum<E>>
EnumSet<E>
Используется для создания набора перечислений, инициализированного из упомянутой коллекции.
copyOf(EnumSet<E> s)static <E extends Enum<E>>
EnumSet<E>
Используется для создания набора перечислений с тем же типом элемента, что и упомянутый набор перечислений, изначально содержащий те же элементы (если таковые имеются).
complementOf(EnumSet<E> s)static <E extends Enum<E>>
EnumSet<E>
Используется для создания набора перечислений с тем же типом элемента, что и упомянутый набор перечислений, изначально содержащий все элементы этого типа, которые не содержатся в указанном наборе.
noneOf(Class<E> elementType)static <E extends Enum<E>>
EnumSet<E>
Используется для создания пустого набора перечислений с указанным типом элемента.
clone()EnumSet<E>Для возврата копии этого набора.

Примечание: вы можете использовать метод of() до 5 параметров. Таким образом, вы можете создать набор перечислений, изначально содержащий указанные элементы, следующим образом:

  • 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)

Операции

Чтобы объяснить вам действия EnumSet, я рассмотрю следующий фрагмент кода. Этот фрагмент кода содержит набор значений перечисления [DevOps, Big Data, Python, Data Science, RPA]. В последующем разделе кода я покажу вам, как использовать различные методы в следующей последовательности:

  • 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()

Фрагмент кода

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);	    
	    
	    } 
}

Вывод

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]

Оцени статью

Средняя оценка / 5. Количество голосов:

 

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)