1. Overview
In this article, You will learn in-depth about the Dictionary class in java and how to create a dictionary in java?
Dictionary is an abstract class in java api which used in collections such as Hashtable. Dictionary supports backend to store the values as key, value pair. Key and Values are should be objects.
In Dictionary, Every key value must be having a value that can be a null or non-null object and keys are not stored in the insertion order. This does not allow duplicate keys.
Since the dictionary is an abstract class so, we can not create an object for it. Hence, object creation is possible to only its implementation classes. As a rule, the equals method should be used by implementations of this class to decide if two keys are the same.
Constructor:
Dictionary() --> Sole constructor.
Methods:
abstract Enumeration<V> elements(): Returns an enumeration of the values in this dictionary.
abstract V get(Object key): Returns the value to which the key is mapped in this dictionary.
abstract boolean isEmpty() : Tests if this dictionary maps no keys to value.
abstract Enumeration<K> keys() : Returns an enumeration of the keys in this dictionary.
abstract V put(K key, V value): Maps the specified key to the specified value in this dictionary.
abstract V remove(Object key): Removes the key (and its corresponding value) from this dictionary.
abstract int size() : Returns the number of entries (distinct keys) in this dictionary.
Creating a Dictionary object can be done only by its subclass that is Hashtable.
dictionary: {3=Number Three, 2=Number Two, 1=Number One}
A reference is a dictionary but the object is created for Hashtable which is the implementation of it. Observe the order of output and order is not preserved.
If we know the key then by using get(String key) method, we can get the value of a particular key.
Finding the value for key 2
Printing value of key 2 is Number Two
It provides a method called keys() method and returns the Enumeration of keys.
Output:
Getting keys
Key : 3
Key : 2
Key : 1
After getting all key then if we call keys.nextElement() after while loop there are no keys to print. We will get run time exception saying "NoSuchElementException".
Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator
at java.util.Hashtable$Enumerator.nextElement(Unknown Source)
at com.adeepdrive.dictionary.DictonaryExample.main(DictonaryExample.java:28)
By calling elements() method, we will get the Enumeration of values.
Output:
Getting values
Value : Number Three
Value : Number Two
Value : Number One
Till now we have retrieved First keys from the dictionary, second just only values.
Key Value
USA --> USD
Austria --> EUR
Australia --> AUD
France --> EUR
Just imagine, We do not know what are the keys present in it. But we want to get the values only for countries starts with Aus.
Output:
Key : Austria, Value : EUR
Key : Australia, Value : AUD
Dictionary does not allow duplicate keys. We will see now how it behaves.
Output:
Employee address: {Julee=New York, Robert=United Kingdom}
In this example, we have added key Robert two times but the second time added new value. It overrides old value with new. Now we will have only one key.
In Dictionary, Every key value must be having a value that can be a null or non-null object and keys are not stored in the insertion order. This does not allow duplicate keys.
Since the dictionary is an abstract class so, we can not create an object for it. Hence, object creation is possible to only its implementation classes. As a rule, the equals method should be used by implementations of this class to decide if two keys are the same.
2. Class declaration:
public abstract class Dictionary<K,V> extends Object
Constructor:
Dictionary() --> Sole constructor.
Methods:
abstract Enumeration<V> elements(): Returns an enumeration of the values in this dictionary.
abstract V get(Object key): Returns the value to which the key is mapped in this dictionary.
abstract boolean isEmpty() : Tests if this dictionary maps no keys to value.
abstract Enumeration<K> keys() : Returns an enumeration of the keys in this dictionary.
abstract V put(K key, V value): Maps the specified key to the specified value in this dictionary.
abstract V remove(Object key): Removes the key (and its corresponding value) from this dictionary.
abstract int size() : Returns the number of entries (distinct keys) in this dictionary.
3. How do you create a Dictionary in Java?
Creating a Dictionary object can be done only by its subclass that is Hashtable.
Dictionary Example:
package com.adeepdrive.dictionary;
import java.util.Dictionary;
import java.util.Hashtable;
public class DictonaryExample {
public static void main(String[] args) {
Dictionary<Integer, String> dictionary = new Hashtable<>();
dictionary.put(1, "Number One");
dictionary.put(2, "Number Two");
dictionary.put(3, "Number Three");
System.out.println("dictionary : " + dictionary);
}
}
Output:dictionary: {3=Number Three, 2=Number Two, 1=Number One}
A reference is a dictionary but the object is created for Hashtable which is the implementation of it. Observe the order of output and order is not preserved.
4. How to get the value for the specific key?
If we know the key then by using get(String key) method, we can get the value of a particular key.
System.out.println("Finding the value for key 2");
String value = dictionary.get(2);
System.out.println("Printing value of key 2 is " + value);
Output:Finding the value for key 2
Printing value of key 2 is Number Two
5. Retrieving all keys from the dictionary:
It provides a method called keys() method and returns the Enumeration of keys.
System.out.println("Getting keys");
Enumeration<Integer> keys = dictionary.keys();
while (keys.hasMoreElements()) {
System.out.println("Key : " + keys.nextElement());
}
Output:
Getting keys
Key : 3
Key : 2
Key : 1
After getting all key then if we call keys.nextElement() after while loop there are no keys to print. We will get run time exception saying "NoSuchElementException".
Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator
at java.util.Hashtable$Enumerator.nextElement(Unknown Source)
at com.adeepdrive.dictionary.DictonaryExample.main(DictonaryExample.java:28)
6. How to get only values from the Dictionary:
By calling elements() method, we will get the Enumeration of values.
System.out.println("Getting values");
Enumeration<String> values = dictionary.elements();
while (values.hasMoreElements()) {
System.out.println("Value : " + values.nextElement());
}
Output:
Getting values
Value : Number Three
Value : Number Two
Value : Number One
7. How to get the values based on particular conditions on keys?
Till now we have retrieved First keys from the dictionary, second just only values.
Key Value
USA --> USD
Austria --> EUR
Australia --> AUD
France --> EUR
Just imagine, We do not know what are the keys present in it. But we want to get the values only for countries starts with Aus.
package com.adeepdrive.dictionary;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
public class DictonaryIterateExample {
public static void main(String[] args) {
Dictionary<String, String> countryCurrency = new Hashtable<>();
countryCurrency.put("USA", "USD");
countryCurrency.put("Austria", "EUR");
countryCurrency.put("Australia", "AUD");
countryCurrency.put("France", "EUR");
Enumeration<String> keys = countryCurrency.keys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
if (key.startsWith("Aus")) {
String value = countryCurrency.get(key);
System.out.println("Key : " + key + ", Value : " + value);
}
}
}
}
Output:
Key : Austria, Value : EUR
Key : Australia, Value : AUD
8. What will happen if we keep the same key again in it with a different value?
Dictionary does not allow duplicate keys. We will see now how it behaves.
public class DictonaryDuplicateExample {
public static void main(String[] args) {
Dictionary<String, String> employeeAddresses = new Hashtable<>();
employeeAddresses.put("Robert", "Los Angeles");
employeeAddresses.put("Julee", "New York");
// Robert address changing now.
employeeAddresses.put("Robert", "United Kingdom");
System.out.println("Employee address : "+employeeAddresses);
}
}
Output:
Employee address: {Julee=New York, Robert=United Kingdom}
In this example, we have added key Robert two times but the second time added new value. It overrides old value with new. Now we will have only one key.
No comments:
Post a Comment
Please do not add any spam links in the comments section.