Table of Contents
EnumSet
Home Java javaTutorial A brief discussion on EnumSet of Java collections

A brief discussion on EnumSet of Java collections

Jul 19, 2018 am 10:51 AM
enumset java collection


EnumSet

EnumSet is a collection class specially designed for enumeration. All elements in EnumSet must be enumeration values ​​of the specified enumeration type. , the enumeration type is specified explicitly or implicitly when creating the EnumSet.

  1. #The set elements of EnumSet are also ordered. EnumSet determines the order of set elements based on the order in which the enumeration values ​​are defined within the Enum class.

  2. EnumSet is stored internally in the form of a bit vector. This storage form is very compact and efficient, so the EnumSet object occupies very little memory and runs very efficiently. Especially when performing batch operations (such as calling the containsAll() and retainAll() methods), if the parameters are also EnumSet collections, the execution speed of the batch operation is also very fast.

  3. The EnumSet class does not expose any constructor to create instances of this class, and the program should create EnumSet objects through the class methods it provides.

  4. The EnumSet collection does not allow adding null elements. If you try to insert a null element, EnumSet will throw a NullPointerException exception.

  5. If you just want to determine whether the EnumSet contains null elements or try to delete null elements, no exception will be thrown. Just the deletion operation will return false because no null elements are deleted.

Method introduction:

  • EnumSet allOf(Class elementType): Create an array containing the specified EnumSet collection of all enumeration values ​​in the enumeration class.

  • EnumSet complementOf(EnumSet e): Create an EnumSet collection whose element type is the same as the element type in the specified EnumSet. The new EnumSet collection contains all the elements that the original EnumSet collection does not Contains the remaining enumeration values ​​of this type of enumeration class (that is, the sum of the collection elements of the new EnumSet collection and the original EnumSet collection is all the enumeration values ​​of the enumeration class).

  • EnumSet copyOf(Collection c): Use an ordinary collection to create an EnumSet collection.

  • EnumSet copyOf(EnumSet e): Create an EnumSet collection with the same element type and the same collection elements of the specified EnumSet.

  • EnumSet noneOf(Class elementType): Create an empty EnumSet whose element type is the specified enumeration type.

  • EnumSet of(E first,E…rest): Create an EnumSet collection containing one or more enumeration values, passing in multiple enumerations Values ​​must belong to the same enumeration class.

  • EnumSet range(E from,E to): Create an EnumSet set containing all enumeration values ​​in the range from the from enumeration value to the to enumeration value. .

Sample code:

package com.collection;

import java.util.EnumSet;

public class EnumSetTest {

    public static void main(String[] args) {
        //1.创建一个包含Session(枚举类)里所有枚举值的EnumSet集合
        EnumSet e1 = EnumSet.allOf(Session.class);
        System.out.println(e1);//[SPRING, SUMMER, FAIL, WINTER]

        //2.创建一个空EnumSet
        EnumSet e2 = EnumSet.noneOf(Session.class);
        System.out.println(e2);//[]

        //3. add()空EnumSet集合中添加枚举元素
        e2.add(Session.SPRING);
        e2.add(Session.SUMMER);
        System.out.println(e2);//[SPRING, SUMMER]

        //4. 以指定枚举值创建EnumSet集合
        EnumSet e3 = EnumSet.of(Session.SPRING,Session.FAIL);
        System.out.println(e3);//[SPRING, FAIL]

        //5.创建一个包含从from枚举值到to枚举值范围内所有枚举值的EnumSet集合。
        EnumSet e4 = EnumSet.range(Session.SPRING,Session.FAIL);
        System.out.println(e4);//[SPRING, SUMMER, FAIL]

        //6.创建一个其元素类型与指定EnumSet里元素类型相同的EnumSet集合,
        //  新EnumSet集合包含原EnumSet集合所不包含的枚举值
        EnumSet e5 = EnumSet.complementOf(e4);
        System.out.println(e5);//[WINTER]
    }
}

//创建一个枚举
enum Session{
    SPRING,
    SUMMER,
    FAIL,
    WINTER
}
Copy after login

Note:

In addition, you can also copy all the items in another EnumSet collection elements to create a new EnumSet collection, or copy all elements from another Collection to create a new EnumSet collection.

Example:

Collection c = new HashSet();
        c.clear();
        c.add(Session.SPRING);
        c.add(Session.FAIL);
        EnumSet e6 = EnumSet.copyOf(c);
        System.out.println(e6);//[SPRING, FAIL]
Copy after login

Note: When copying all elements in the Collection set to create a new EnumSet collection, all elements in the Collection set must be the same enumeration Enumeration value of the enumeration class.

Error example:

c.add("Java");
    e6 = EnumSet.copyOf(c);//java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum
Copy after login

Things won are done; joy’s soul lies in the doing.
Getting is completion, the essence of happiness lies in the process.

The above is the detailed content of A brief discussion on EnumSet of Java collections. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1657
14
PHP Tutorial
1257
29
C# Tutorial
1231
24
Is the company's security software causing the application to fail to run? How to troubleshoot and solve it? Is the company's security software causing the application to fail to run? How to troubleshoot and solve it? Apr 19, 2025 pm 04:51 PM

Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

How do I convert names to numbers to implement sorting and maintain consistency in groups? How do I convert names to numbers to implement sorting and maintain consistency in groups? Apr 19, 2025 pm 11:30 PM

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

How does IntelliJ IDEA identify the port number of a Spring Boot project without outputting a log? How does IntelliJ IDEA identify the port number of a Spring Boot project without outputting a log? Apr 19, 2025 pm 11:45 PM

Start Spring using IntelliJIDEAUltimate version...

How to simplify field mapping issues in system docking using MapStruct? How to simplify field mapping issues in system docking using MapStruct? Apr 19, 2025 pm 06:21 PM

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

How to elegantly obtain entity class variable names to build database query conditions? How to elegantly obtain entity class variable names to build database query conditions? Apr 19, 2025 pm 11:42 PM

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

How to safely convert Java objects to arrays? How to safely convert Java objects to arrays? Apr 19, 2025 pm 11:33 PM

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

How to use the Redis cache solution to efficiently realize the requirements of product ranking list? How to use the Redis cache solution to efficiently realize the requirements of product ranking list? Apr 19, 2025 pm 11:36 PM

How does the Redis caching solution realize the requirements of product ranking list? During the development process, we often need to deal with the requirements of rankings, such as displaying a...

E-commerce platform SKU and SPU database design: How to take into account both user-defined attributes and attributeless products? E-commerce platform SKU and SPU database design: How to take into account both user-defined attributes and attributeless products? Apr 19, 2025 pm 11:27 PM

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...

See all articles