📜  实现 EnumMap API 的Java程序

📅  最后修改于: 2022-05-13 01:55:39.763000             🧑  作者: Mango

实现 EnumMap API 的Java程序

EnumMap 是一个 Map 实现,它以枚举值作为其键。现在,你们可能想知道什么是枚举,对吧?嗯,枚举是一种用户定义的数据类型,通常在所有可能的值都已知时使用。

在本文中,我们将在Java程序中实现 EnumMap API。但首先,我们将学习一些在程序中使用过的概念,然后我们将直接深入到程序中。

EnumMap API 属于Java.util包。为了实现 EnumMap API,将使用一个特殊的类,其定义如下。

EnumMapImpl, V> class

此类表示将 EnumMap API 用于枚举或枚举数据类型。 K 代表键类型条目,V 代表映射中的值类型条目。

示例 1:

让我们考虑一个以衣服尺寸为键的 EnumMap。

enum Dress_sizes
    {
        extra-small, small, medium, large, extra-large;
    }

现在,比如说,我们实现了 EnumMap API 的一个基本功能,我们想知道特定的衣服尺寸是否可用,为此,我们将使用函数。 enumMap.containsKey( ) ,如果大小存在则返回true,否则返回false。

宣言:

enumMap.containsKey(Dress_sizes.extra-large);
Input: extra-large
Output: true

Input: extra-extra-large
Output: false

由于 Map 中存在超大尺寸,因此返回 true,由于不存在超大尺寸,则返回 false。

示例 2:

我们再举一个这样的例子,实现Map的另一个基本特性,比如我们想清空上面的EnumMap。为此,我们将简单地使用enumMap.clear()函数来清除 EnumMap。

宣言:

enumMap.clear();
Output: The enumMap is now empty.       
        enum Dress_sizes
        { 
                   
        }

实现方法:

  • 已经定义了一个 EnumMap 类,并且预定义了枚举值和键集。
  • 在 main函数中,这些值已与其各自的键集配对。
  • 然后使用基本的 enumMap 函数来执行各种任务。

执行:

Java
// Java program to implement enum Map API
  
import java.lang.*;
import java.util.Collection;
import java.util.EnumMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
  
public class EnumMapImpl, V> {
    EnumMap enumMap;
  
    // For creating an empty enum map with the specified key
    // type.
    public EnumMapImpl(Class keyType)
    {
        enumMap = new EnumMap(keyType);
    }
  
    // For creating an enum map which will have the same key
    // type as the specified enum map,
  
    public EnumMapImpl(EnumMap m)
    {
        enumMap = new EnumMap(m);
    }
  
    // For Creating an enum map that is initialized from the
    // specified map.
    public EnumMapImpl(Map m)
    {
        enumMap = new EnumMap(m);
    }
  
    // Clears the Mappings from the enumMap.
    public void clear() { enumMap.clear(); }
    
    // Returns true if the specified value is found.
    public boolean containsValue(Object value)
    {
        return enumMap.containsValue(value);
    }
  
    // Returns true if the specified key is found.
    public boolean containsKey(Object key)
    {
        return enumMap.containsKey(key);
    }
  
    // Returns the key set of the enumMap
    public Set keySet() { return enumMap.keySet(); }
  
    // Returns the entry set( values + keys) of the enumMap.
    public Set > entrySet()
    {
        return enumMap.entrySet();
    }
  
    // Returns the value to which a specified key is mapped,
    // else returns null if the specified key is not found.
  
    public V get(Object key) { return enumMap.get(key); }
  
    // Associates the specified Key and Value.
    public V put(K key, V value)
    {
        return enumMap.put(key, value);
    }
  
    // Copies the mappings of another map to the specified
    // map.
    public void putAll(Map map)
    {
        enumMap.putAll(map);
    }
  
    // Returns the size of the enumMap.
    public int size() { return enumMap.size(); }
  
    // Returns the values mapped in the specified enumMap.
    public Collection values()
    {
        return enumMap.values();
    }
  
    // Returns true if the enumMap is empty.
    public boolean isEmpty() { return enumMap.isEmpty(); }
    
    // Initializing the enumMap.
    enum Week_Days {
        SUNDAY,
        MONDAY,
        TUESDAY,
        WEDNESDAY,
        THURSDAY,
        FRIDAY,
        SATURDAY;
    }
  
    // Main function.
    public static void main(String[] args)
    {
  
        EnumMapImpl enumMap
            = new EnumMapImpl(Week_Days.class);
        
        enumMap.put(Week_Days.SUNDAY, 1);
        enumMap.put(Week_Days.MONDAY, 2);
        enumMap.put(Week_Days.TUESDAY, 3);
        enumMap.put(Week_Days.WEDNESDAY, 4);
        enumMap.put(Week_Days.THURSDAY, 5);
        enumMap.put(Week_Days.FRIDAY, 6);
        enumMap.put(Week_Days.SATURDAY, 7);
  
        System.out.println("The size of the enumMap is: "
                           + enumMap.size());
        
        System.out.println();
  
        System.out.println("The values of the enumMap is: ");
        
        Collection ci = enumMap.values();
        
        Iterator iin1 = ci.iterator();
        
        while (iin1.hasNext()) 
        {
            System.out.print(iin1.next() + "\t");
        }
        
        System.out.println();
        System.out.println();
  
        System.out.println("The key set of the enumMap is: ");
        
        Set ws = enumMap.keySet();
        
        Iterator iin2 = ws.iterator();
        
        while (iin2.hasNext()) 
        {
            System.out.print(iin2.next() + "  ");
        }
        
        System.out.println();
        System.out.println();
        
        System.out.println("The enumMap is: ");
        
        Iterator > week_iterator;
        
        Set > wi = enumMap.entrySet();
        week_iterator = wi.iterator();
        
        while (week_iterator.hasNext()) 
        {
            System.out.println(week_iterator.next() + "\t");
        }
        
        System.out.println();
        System.out.println("The enumMap contains Key SUNDAY "
            + ": " + enumMap.containsKey(Week_Days.SUNDAY));
        
        System.out.println("The enumMap contains Value 1 "
                           + ": "
                           + enumMap.containsValue(1));
        
        enumMap.clear();
        
        if (enumMap.isEmpty())
            System.out.println("The EnumMap is now empty.");
        else
            System.out.println("The EnumMap is not empty.");
    }
}


输出
The size of the enumMap is: 7

The values of the enumMap is: 
1    2    3    4    5    6    7    

The key set of the enumMap is: 
SUNDAY  MONDAY  TUESDAY  WEDNESDAY  THURSDAY  FRIDAY  SATURDAY  

The enumMap is: 
SUNDAY=1    
MONDAY=2    
TUESDAY=3    
WEDNESDAY=4    
THURSDAY=5    
FRIDAY=6    
SATURDAY=7    

The enumMap contains Key SUNDAY : true
The enumMap contains Value 1 : true
The EnumMap is now empty.