Java Collections – EnumMap Example
A specialized Map implementation for use with enum type keys. All of the keys in an EnumMap must come from a single enum type that is specified when the map is created. EnumMaps are represented internally as arrays. It is for this reason that they are extremely compact and efficient. In my example, you can see the Enums in the Protocol class detailed below.
Big-O Notation
According to the Javadocs, this implementation provides constant-time O(1) performance for the basic operations (get and put).
Creating an EnumMap
EnumMap<Protocol, String> internetProtocols = new EnumMap<Protocol, String>(Protocol.class);
Adding elements
Adding elements to the internetProtocols EnumMap is done by using the put(Protocol key, String value) method. The key of the EnumMap will be the Protocol class enum value and the value will be an String object.
internetProtocols.put(Protocol.TCP, "Transmission Control Protocol"); internetProtocols.put(Protocol.UDP, "User Datagram Protocol"); internetProtocols.put(Protocol.ICMP, "Internet Control Message Protocol"); ...
Removing elements
Removes the mapping for this key from this map, if present. Removing elements is just a matter of calling the remove(Object key) method.
// Remove old and relatively unused protocol internetProtocols.remove(Protocol.GOPHER);
Size of Collection
Returning the number of elements in a EnumMap is as easy as calling the size() method.
internetProtocols.size();
Full Program Listing (EnumMapExample.java)
package com.avaldes.tutorials; import java.util.EnumMap; public class EnumMapExample { public static void main(String[] args) { // Instantiate the EnumMap of Internet Protocols EnumMap<Protocol, String> internetProtocols = new EnumMap<Protocol, String>(Protocol.class); System.out.println("Setting up the EnumMap of Internet Protocols..."); // Set up the EnumMap and add in the descriptions into the map internetProtocols.put(Protocol.TCP, "Transmission Control Protocol"); internetProtocols.put(Protocol.UDP, "User Datagram Protocol"); internetProtocols.put(Protocol.ICMP, "Internet Control Message Protocol"); internetProtocols.put(Protocol.HTTP, "Hypertext Transfer Protocol"); internetProtocols.put(Protocol.FTP, "File Transmission Protocol"); internetProtocols.put(Protocol.SSH, "Secure Shell Protocol"); internetProtocols.put(Protocol.SMTP, "Simple Mail Transfer Protocol"); internetProtocols.put(Protocol.SNMP, "Simple Network Management Protocol"); internetProtocols.put(Protocol.POP3, "Post Office Protocol"); internetProtocols.put(Protocol.IRC, "Internet Relay Chat"); internetProtocols.put(Protocol.TELNET, "Telnet Protocol"); internetProtocols.put(Protocol.GOPHER, "Gopher Protocol"); // Remove old and relatively unused protocol internetProtocols.remove(Protocol.GOPHER); System.out.println("Displaying the list of Common Internet Protocols"); // Let's iterate over the entire EnumMap for (Protocol p : internetProtocols.keySet()) { // Format the output nicely System.out.println("Internet Protocol => " + p.name() + ", Description => " + internetProtocols.get(p)); } } }
Full Program Listing (Protocol.java)
package com.avaldes.tutorials; public enum Protocol { TCP, UDP, ICMP, HTTP, FTP, SSH, SMTP, SNMP, POP3, GOPHER, TELNET, IRC }
Output
Setting up the EnumMap of Internet Protocols... Displaying the list of Common Internet Protocols Internet Protocol => TCP, Description => Transmission Control Protocol Internet Protocol => UDP, Description => User Datagram Protocol Internet Protocol => ICMP, Description => Internet Control Message Protocol Internet Protocol => HTTP, Description => Hypertext Transfer Protocol Internet Protocol => FTP, Description => File Transmission Protocol Internet Protocol => SSH, Description => Secure Shell Protocol Internet Protocol => SMTP, Description => Simple Mail Transfer Protocol Internet Protocol => SNMP, Description => Simple Network Management Protocol Internet Protocol => POP3, Description => Post Office Protocol Internet Protocol => TELNET, Description => Telnet Protocol Internet Protocol => IRC, Description => Internet Relay Chat
Other Related Posts
Map Examples
- Hashtable Example
Simple example shows you step by step how to use Hashtable - HashMap Example
Simple example shows you step by step how to use HashMap - TreeMap Example
Simple example shows you step by step how to use TreeMap to sort a collection - EnumMap Example
Simple example shows you step by step how to use EnumMap for type-safety and speed of finite list of elements - WeakHashMap Example
Simple example shows you step by step how to use WeakHashMap - LinkedHashMap Example
Simple example shows you step by step how to use LinkedHashMap - Performance Comparison HashMap vs Hashtable vs TreeMap
Performance Comparison - Performance Comparison HashMap vs Hashtable vs TreeMap Benchmark Test
List Examples
- Stack Example
Simple example shows you step by step how to use Stack - Vector Example
Simple example shows you step by step how to use Vector - LinkedList Example
Simple example shows you step by step how to use LinkedList - ArrayList Example
Simple example shows you step by step how to use ArrayList - Performance Comparison between the four list implementations
Performance Comparison of ArrayList, LinkedList, Vector, and Stack - Performance Comparison ArrayList vs LinkedList
Performance Comparison - ArrayList vs LinkedList
Set Examples
- BitSet Example
Simple example shows you step by step how to use BitSet - EnumSet Example
Simple example shows you step by step how to use EnumSet - HashSet Example
Simple example shows you step by step how to use HashSet - TreeSet Example
Simple example shows you step by step how to use TreeSet - LinkedHashSet Example
Simple example shows you step by step how to use LinkedHashSet
Leave a Reply