亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 枚举映射

Java 枚举映射

在本教程中,我们将通过示例了解 Java EnumMap 类及其操作。

EnumMap Java 集合框架的类为枚举的元素提供了映射实现。

EnumMap , 枚举元素被用作 keys .它实现了 Map 接口。

在我们了解EnumMap之前 ,请务必了解 Java 枚举。


创建一个枚举映射

为了创建枚举映射,我们必须导入 java.util.EnumMap 先打包。导入包后,我们可以通过以下方式在 Java 中创建枚举映射。

enum Size {
    SMALL, MEDIUM, LARGE, EXTRALARGE
}

EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);

在上面的示例中,我们创建了一个名为 sizes 的枚举映射 .

在这里,


EnumMap 的方法

EnumMap 类提供了允许我们在枚举映射上执行各种元素的方法。


向 EnumMap 插入元素

例如,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class);

        // Using the put() Method
        sizes1.put(Size.SMALL, 28);
        sizes1.put(Size.MEDIUM, 32);
        System.out.println("EnumMap1: " + sizes1);

        EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class);

        // Using the putAll() Method
        sizes2.putAll(sizes1);
        sizes2.put(Size.LARGE, 36);
        System.out.println("EnumMap2: " + sizes2);
    }
}

输出

EnumMap1: {SMALL=28, MEDIUM=32}
EnumMap2: {SMALL=28, MEDIUM=32, LARGE=36}

在上面的例子中,我们使用了 putAll() 插入枚举映射 sizes1 的所有元素的方法 到 sizes2 的枚举映射 .

也可以插入来自其他地图的元素,例如 HashMap , TreeMap 等到使用 putAll() 的枚举映射 .但是,所有映射都应该是相同的枚举类型。


访问 EnumMap 元素

1。使用 entrySet()、keySet() 和 values()

例如,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the entrySet() Method
        System.out.println("Key/Value mappings: " + sizes.entrySet());

        // Using the keySet() Method
        System.out.println("Keys: " + sizes.keySet());

        // Using the values() Method
        System.out.println("Values: " + sizes.values());
    }
}

输出

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Key/Value mappings: [SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40]
Keys: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Values: [28, 32, 36, 40]

2。使用 get() 方法

get() 方法返回与指定键关联的值。它返回 null 如果没有找到指定的键。

例如,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the get() Method
        int value = sizes.get(Size.MEDIUM);
        System.out.println("Value of MEDIUM: " + value);
    }
}

输出

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Value of MEDIUM: 32

删除 EnumMap 元素

例如,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the remove() Method
        int value = sizes.remove(Size.MEDIUM);
        System.out.println("Removed Value: " + value);

        boolean result = sizes.remove(Size.SMALL, 28);
        System.out.println("Is the entry {SMALL=28} removed? " + result);

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

输出

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Removed Value: 32
Is the entry {SMALL=28} removed? True
Updated EnumMap: {LARGE=36, EXTRALARGE=40}

替换 EnumMap 元素

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the replace() Method
        sizes.replace(Size.MEDIUM, 30);
        sizes.replace(Size.LARGE, 36, 34);
        System.out.println("EnumMap using replace(): " + sizes);

        // Using the replaceAll() Method
        sizes.replaceAll((key, oldValue) -> oldValue + 3);
        System.out.println("EnumMap using replaceAll(): " + sizes);
    }
}

输出

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
EnumMap using replace(): {SMALL=28, MEDIUM=30, LARGE=34, EXTRALARGE=40}
EnumMap using replaceAll(): {SMALL=31, MEDIUM=33, LARGE=37, EXTRALARGE=43}

在上面的程序中,注意语句

sizes.replaceAll((key, oldValue) -> oldValue + 3);

在这里,该方法访问地图的所有条目。然后它将所有值替换为 lambda 表达式提供的新值。


其他方法

方法 说明
clone() 创建 EnumMap 的副本
containsKey() 搜索 EnumMap 对于指定的键并返回一个布尔结果
containsValue() 搜索EnumMap 为指定的值并返回一个布尔结果
size() 返回EnumMap的大小
clear() EnumMap 中删除所有条目

EnumSet 对比。枚举映射

EnumSet 和 EnumMap 类提供数据结构来存储枚举值。但是,它们之间存在一些重大差异。


可克隆和可序列化的接口

EnumMap 类还实现了 CloneableSerializable 接口。

可克隆界面

它允许 EnumMap 类来复制该类的实例。

可序列化接口

每当需要通过网络传输 Java 对象时,都需要将对象转换为位或字节。这是因为 Java 对象无法通过网络传输。

Serializable 接口允许类被序列化。这意味着实现 Serializable 的类的对象 可以转换为位或字节。


java

  1. 枚举
  2. Java 运算符
  3. Java 评论
  4. Java for-each 循环
  5. Java 字符串
  6. Java 接口
  7. Java 匿名类
  8. Java 枚举
  9. Java枚举构造函数
  10. Java 枚举字符串
  11. Java try-with-resources
  12. Java 注释