산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 열거형 집합

자바 EnumSet

이 튜토리얼에서는 예제를 통해 Java EnumSet 클래스와 다양한 메소드에 대해 알아볼 것입니다.

EnumSet Java 컬렉션 프레임워크의 클래스는 단일 열거형 요소의 집합 구현을 제공합니다.

EnumSet에 대해 배우기 전에 Java Enum에 대해 알아야 합니다.

Set 인터페이스를 구현합니다.

<시간>

EnumSet 생성

열거형 세트를 생성하려면 java.util.EnumSet를 가져와야 합니다. 먼저 포장하십시오.

다른 집합 구현과 달리 열거 집합에는 공용 생성자가 없습니다. 열거형 집합을 생성하려면 미리 정의된 메서드를 사용해야 합니다.

1. allOf(크기) 사용

allof() 메서드는 지정된 열거형 유형 Size의 모든 값을 포함하는 열거형 집합을 만듭니다. . 예를 들어,

import java.util.EnumSet;

class Main {
    // an enum named Size
    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    
    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);

        System.out.println("EnumSet: " + sizes);
    }

}

출력

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]

진술을 주목하십시오.

EnumSet<Size> sizes = EnumSet.allOf(Size.class);

여기 Size.class 크기를 나타냅니다. 우리가 만든 열거형.

<시간>

2. noneOf(크기) 사용

noneOf() 메서드는 빈 열거형 집합을 만듭니다. 예를 들어,

import java.util.EnumSet;

class Main {

     // an enum type Size
    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using noneOf()
        EnumSet<Size> sizes = EnumSet.noneOf(Size.class);

        System.out.println("Empty EnumSet: " + sizes);
    }
}

출력

Empty EnumSet : []

여기에서 sizes라는 빈 열거형을 만들었습니다. .

참고 :열거형 Size의 요소만 삽입할 수 있습니다. 위의 프로그램에서. Size를 사용하여 빈 열거형 세트를 생성했기 때문입니다. 열거.

<시간>

3. range(e1, e2) 메서드 사용

range() 메소드는 e1 사이의 모든 열거형 값을 포함하는 열거형 세트를 생성합니다. 및 e2 두 값을 모두 포함합니다. 예를 들어,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using range()
        EnumSet<Size> sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE);

        System.out.println("EnumSet: " + sizes);
    }
}

출력

EnumSet: [MEDIUM, LARGE, EXTRALARGE]
<시간>

4. of() 메서드 사용

of() 메서드는 지정된 요소를 포함하는 열거형 집합을 만듭니다. 예를 들어,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Using of() with a single parameter
        EnumSet<Size> sizes1 = EnumSet.of(Size.MEDIUM);
        System.out.println("EnumSet1: " + sizes1);

        EnumSet<Size> sizes2 = EnumSet.of(Size.SMALL, Size.LARGE);
        System.out.println("EnumSet2: " + sizes2);
    }
}

출력

EnumSet1: [MEDIUM]
EnumSet2: [SMALL, LARGE]
<시간>

EnumSet의 메소드

EnumSet 클래스는 열거형 집합에서 다양한 요소를 수행할 수 있는 메서드를 제공합니다.

<시간>

EnumSet에 요소 삽입

예를 들어,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes1 = EnumSet.allOf(Size.class);

        // Creating an EnumSet using noneOf()
        EnumSet<Size> sizes2 = EnumSet.noneOf(Size.class);

        // Using add method
        sizes2.add(Size.MEDIUM);
        System.out.println("EnumSet Using add(): " + sizes2);

        // Using addAll() method
        sizes2.addAll(sizes1);
        System.out.println("EnumSet Using addAll(): " + sizes2);
    }
}

출력

EnumSet using add(): [MEDIUM]
EnumSet using addAll(): [SMALL, MEDIUM, LARGE, EXTRALARGE]

위의 예에서는 addAll()을 사용했습니다. 열거형 집합 sizes1의 모든 요소를 ​​삽입하는 메서드 열거형 세트 sizes2로 .

ArrayList과 같은 다른 컬렉션의 요소를 삽입하는 것도 가능합니다. , LinkedList 등을 addAll()을 사용하여 열거형 세트로 . 그러나 모든 컬렉션은 동일한 열거형 유형이어야 합니다.

<시간>

EnumSet 요소에 액세스

열거 세트의 요소에 액세스하려면 iterator()을 사용할 수 있습니다. 방법. 이 방법을 사용하려면 java.util.Iterator을 가져와야 합니다. 패키지. 예를 들어,

import java.util.EnumSet;
import java.util.Iterator;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);

        Iterator<Size> iterate = sizes.iterator();

        System.out.print("EnumSet: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

출력

EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,

참고 :

<시간>

EnumSet 요소 제거

예를 들어,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);
        System.out.println("EnumSet: " + sizes);

        // Using remove()
        boolean value1 = sizes.remove(Size.MEDIUM);
        System.out.println("Is MEDIUM removed? " + value1);

        // Using removeAll()
        boolean value2 = sizes.removeAll(sizes);
        System.out.println("Are all elements removed? " + value2);
    }
}

출력

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Is MEDIUM removed? true
Are all elements removed? true
<시간>

기타 방법

메소드 설명
copyOf() EnumSet 사본을 생성합니다.
contains() EnumSet 검색 지정된 요소에 대해 부울 결과를 반환합니다.
isEmpty() EnumSet인지 확인 비어 있습니다
size() EnumSet의 크기를 반환합니다.
clear() EnumSet에서 모든 요소를 ​​제거합니다.
<시간>

복제 및 직렬화 가능한 인터페이스

EnumSet 클래스는 Cloneable도 구현합니다. 및 Serializable 인터페이스.

복제 가능한 인터페이스

EnumSet 클래스의 인스턴스를 복사합니다.

직렬화 가능한 인터페이스

Java 객체가 네트워크를 통해 전송되어야 할 때마다 객체는 비트 또는 바이트로 변환되어야 합니다. Java 객체는 네트워크를 통해 전송할 수 없기 때문입니다.

Serializable 인터페이스를 통해 클래스를 직렬화할 수 있습니다. 이것은 Serializable를 구현하는 클래스의 객체를 의미합니다. 비트 또는 바이트로 변환할 수 있습니다.

<시간>

EnumSet을 사용해야 하는 이유

EnumSet 다른 집합 구현(예:HashSet)보다 열거형 값을 저장하는 효율적인 방법을 제공합니다. , TreeSet ).

열거형 집합은 특정 열거형의 열거형 값만 저장합니다. 따라서 JVM은 세트의 가능한 모든 값을 이미 알고 있습니다.

이것이 열거형 세트가 내부적으로 비트 시퀀스로 구현되는 이유입니다. 비트는 요소가 열거형 세트에 있는지 여부를 지정합니다.

해당 요소가 집합에 있으면 해당 요소의 비트가 켜집니다.


java

  1. 자바 연산자
  2. 자바 주석
  3. 자바 for-each 루프
  4. 자바 문자열
  5. 자바 익명 클래스
  6. 자바 열거형
  7. 자바 열거형 생성자
  8. 자바 리소스 사용
  9. 자바 주석
  10. 자바 어설션