什么对象引用初始化为Dictionary Class类型引用变量?

时间:2014-07-13 08:37:33

标签: java dictionary

我创建了一个DictionaryTest类,将元素及其对应的键添加到字典中,并显示字典的所有元素和键。这是我的代码:

 import java.util.Dictionary;
 import java.util.Enumeration;

 public class DictonaryTest  
 {
     public static void main(String[] args) 
     {
         Dictionary d;
         d.put(new Integer(1),new Integer(100));
         d.put(new Integer(2),new Integer(200));
         d.put(new Integer(3),new Integer(300));
         d.put(new Integer(4),new Integer(400));
         d.put(new Integer(5),new Integer(500));

         System.out.println("Size of dictionary : " + d.size());
         Enumeration ekey = d.keys();
         Enumeration eelement = d.elements();

         System.out.println("Keys in the Dictionary...");
         while(ekey.hasMoreElements()){
             System.out.println(ekey.nextElement() + "\t");
         }

         System.out.println("Elements in the Dictionary...");
         while(eelement.hasMoreElements()){
             System.out.println(eelement.nextElement() + "\t");
         }

     }

 }

但是这里会显示编译错误,这样: 局部变量d可能尚未初始化。 什么对象引用初始化为Dictionary Class类型引用变量?

3 个答案:

答案 0 :(得分:1)

您必须编写一个扩展词典的类或使用

Dictionary<Integer,Integer> d = new HashTable<Integer,Integer>();

但是因为它已经过时了:为什么不使用Map&lt;&gt;?

Map<Integer,Integer> d = new HashMap<>();

Set<Integer> keys = d.keySet();
Collection<Integer> values = d.values();

您可以像对应词典一样轻松地处理这些内容。

答案 1 :(得分:0)

在Java中,与C ++不同,声明变量不会初始化它。你必须手动完成。

Dictionary d = new Dictionary();

编辑: Dictionary是一个抽象类,因此您应该使用它的实现。实际上,现在是obsolete;你应该使用Map代替。以同样的方式工作。

Map d = new HashMap();

你还应该使用可能的泛型:

Map<Integer,Integer> d = new Map<Integer,Integer>();

如果您使用Map,则还必须更改其他代码。

Iterator ikey = d.keySet().iterator();
Iterator ielement = d.values().iterator();
System.out.println("Keys in the Dictionary...");
while(ikey.hasNext()){
    System.out.println(ikey.next() + "\t");
}
System.out.println("Elements in the Dictionary...");
while(ielement.hasNext()){ 
    System.out.println(ielement.next() + "\t");
}

答案 2 :(得分:0)

以下内容适用(请参阅// <--行以更改原始代码

import java.util.Dictionary;
import java.util.Hashtable; // <-- Needed for Hashtable
import java.util.Enumeration;

 public class DictonaryTest  
 {
     public static void main(String[] args) 
     {
         Dictionary d = new Hashtable(); // <-- Initialise d with a Hashtable
         d.put(new Integer(1),new Integer(100));
         d.put(new Integer(2),new Integer(200));
         d.put(new Integer(3),new Integer(300));
         d.put(new Integer(4),new Integer(400));
         d.put(new Integer(5),new Integer(500));

         System.out.println("Size of dictionary : " + d.size());
         Enumeration ekey = d.keys();
         Enumeration eelement = d.elements();

         System.out.println("Keys in the Dictionary...");
         while(ekey.hasMoreElements()){
             System.out.println(ekey.nextElement() + "\t");
         }

         System.out.println("Elements in the Dictionary...");
         while(eelement.hasMoreElements()){
             System.out.println(eelement.nextElement() + "\t");
         }

     }

 }