亿迅智能制造网
工业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 类还实现了 Cloneable 和 Serializable 接口。

可克隆界面

它允许 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 注释