Sunday, 23 October 2016

What is EnumSet In Java ?

Previously we have discussed about

Here we learn about EnumSet In Java, but before that we must know What is Enum in Java ? and What is Collection Interface in Java ?
Class EnumSet<E extends Enum<E>>

All Implemented Interfaces:
Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>

Declaration of EnumSet:
public abstract class EnumSet<E extends Enum<E>>
extends AbstractSet<E>
implements Cloneable, Serializable

EnumSet is a specialized Set implementation for use with Enum types. All of the elements in an enum set must come from a single enum type that is specified, explicitly or implicitly, when the set is created. Enum sets are represented internally as bit vectors.The space and time performance of this class is good enough, even bulk operation runs very quickly if their argument is also an enum set.

In EnumSet Null elements are not permitted. If we try to insert a null element it will throw NullPointerException

Iterator method traverses the elements in their natural order (the order in which the enum constants are declared). 

EnumSet is not synchronized. If multiple threads access an enum set concurrently, and at least one of the threads modifies the set, it should be synchronized externally.
This is best done at creation time, to prevent accidental unsynchronized access:
Set<MyEnum> s = Collections.synchronizedSet(EnumSet.noneOf(MyEnum.class));
This class is a member of the Java Collections Framework.

Method Summary of EnumSet:

Modifier and Method Name
Description
static <E extends Enum<E>>
EnumSet<E>      allOf(Class<E> elementType)
Creates an enum set containing all of the elements in the specified element type.
EnumSet<E>      clone()
Returns a copy of this set.
static <E extends Enum<E>>
EnumSet<E>      complementOf(EnumSet<E> s)
Creates an enum set with the same element type as the specified enum set, initially containing all the elements of this type that are not contained in the specified set.
static <E extends Enum<E>>
EnumSet<E>      copyOf(Collection<E> c)
Creates an enum set initialized from the specified collection.
static <E extends Enum<E>>
EnumSet<E>      copyOf(EnumSet<E> s)
Creates an enum set with the same element type as the specified enum set, initially containing the same elements (if any).
static <E extends Enum<E>>
EnumSet<E>      noneOf(Class<E> elementType)
Creates an empty enum set with the specified element type.
static <E extends Enum<E>>
EnumSet<E>      of(E e)
Creates an enum set initially containing the specified element.
static <E extends Enum<E>>
EnumSet<E>      of(E first, E... rest)
Creates an enum set initially containing the specified elements.
static <E extends Enum<E>>
EnumSet<E>      of(E e1, E e2)
Creates an enum set initially containing the specified elements.
static <E extends Enum<E>>
EnumSet<E>      of(E e1, E e2, E e3)
Creates an enum set initially containing the specified elements.
static <E extends Enum<E>>
EnumSet<E>      of(E e1, E e2, E e3, E e4)
Creates an enum set initially containing the specified elements.
static <E extends Enum<E>>
EnumSet<E>      of(E e1, E e2, E e3, E e4, E e5)
Creates an enum set initially containing the specified elements.
static <E extends Enum<E>>
EnumSet<E>      range(E from, E to)
Creates an enum set initially containing all of the elements in the range defined by the two specified endpoints.

Example of EnumSet:

import java.util.EnumSet;

enum size{
S, M, L, XL, XXL, XXXL;
}
public class EnumSetExample {

public static void main(String[] args) {
EnumSet<size> en = EnumSet.of(size.S,size.L,size.M,size.XXL);
System.out.println("EnumSet Size : "+en.size());
System.out.println("range(), This method gets elements between range : "+en.range(size.S, size.XL));
System.out.println("contains(), This method returns true/false : "+en.contains(size.L));
System.out.println("\nTraversing EnumSet Using for loop : ");
for(size s : en){
System.out.println(s);
}
System.out.println("\nTraversing EnumSet Using Lambda Expression : ");
en.forEach(ele -> System.out.println(ele));
}

}
Program Output:

EnumSet Size : 4
range(), This method gets elements between range : [S, M, L, XL]
contains(), This method returns true/false : true

Traversing EnumSet Using for loop :
S
M
L
XXL

Traversing EnumSet Using Lambda Expression :
S
M
L
XXL
    

Blog Author - Pushkar Khosla,
Software Developer by Profession with 3.0 Yrs of Experience , through this blog i'am sharing my industrial Java Knowledge to entire world. For any question or query any one can comment below or mail me at pushkar.itsitm52@gmail.com.

This blog is all about to learn Core Java ,Interview Programs and Coding tricks to polish your Java Knowledge. If you like the content of this blog please share this with your friends.



No comments:

Post a Comment