实现 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 extends K, ? extends V> 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.