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

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

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)

In Java remote debugging, how to correctly obtain constant values ​​on remote servers? In Java remote debugging, how to correctly obtain constant values ​​on remote servers? Apr 19, 2025 pm 01:54 PM

Questions and Answers about constant acquisition in Java Remote Debugging When using Java for remote debugging, many developers may encounter some difficult phenomena. It...

In back-end development, how to distinguish the responsibilities of the service layer and the dao layer? In back-end development, how to distinguish the responsibilities of the service layer and the dao layer? Apr 19, 2025 pm 01:51 PM

Discussing the hierarchical architecture in back-end development. In back-end development, hierarchical architecture is a common design pattern, usually including controller, service and dao three layers...

How to convert names to numbers to implement sorting within groups? How to convert names to numbers to implement sorting within groups? Apr 19, 2025 pm 01:57 PM

How to convert names to numbers to implement sorting within groups? When sorting users in groups, it is often necessary to convert the user's name into numbers so that it can be different...

What should I do if a third-party interface is called in Spring Boot project, and the field name case and getter method are inconsistent, resulting in data transmission failure? What should I do if a third-party interface is called in Spring Boot project, and the field name case and getter method are inconsistent, resulting in data transmission failure? Apr 19, 2025 pm 02:03 PM

The difficulties encountered when calling third-party interfaces to transmit data in SpringBoot project will be used for a Spring...

Why does the Python script not be found when submitting a PyFlink job on YARN? Why does the Python script not be found when submitting a PyFlink job on YARN? Apr 19, 2025 pm 02:06 PM

Analysis of the reason why Python script cannot be found when submitting a PyFlink job on YARN When you try to submit a PyFlink job through YARN, you may encounter...

How to dynamically modify the savePath parameter of @Excel annotation in easypoi when project starts in Java? How to dynamically modify the savePath parameter of @Excel annotation in easypoi when project starts in Java? Apr 19, 2025 pm 02:09 PM

How to dynamically configure the parameters of entity class annotations in Java During the development process, we often encounter the need to dynamically configure the annotation parameters according to different environments...

See all articles