2013-05-02 57 views
-2

如何填充我的HashMap,并将所有条目存储在单独的.properties文件中? 我有一个文件resume.propertiesclass文件放在Eclipse的bin文件夹中。用.properties文件中存储的所有条目填充HashMap

该文件包含的条目是这样

available = 1 
bismarck = 1 
employees = 1 
reports = 1 
home = 1 
company = 1 
work = 2 
........ 

我想这个条目尽快那类的构造函数被调用填充到我的HashMap中。

public class TextClassifier { 

    static HashMap<String,Integer> resume = new HashMap<String, Integer>(); 

    public TextClassifier(){ 
    try { 
     properties.load(TextClassifier.class.getResourceAsStream("resume.properties"));    
    } 
    catch (Exception e) {} 

    for (String key : properties.stringPropertyNames()) { 
     String value = properties.getProperty(key); 
     resume.put(key, Integer.valueOf(value)); 
    } 

    } 

    public static void printHashmap(HashMap<String,Integer> map){ 
    for(Map.Entry<String, Integer> entry:map.entrySet()){ 
     int val=entry.getValue(); 
     String key=entry.getKey(); 
     System.out.println(key + " = " + val); 
    } 
    } 

    public static void main(String args[]){ 
    new TextClassifier(); 
    TextClassifier.printHashmap(TextClassifier.resume); 

    } 
} 

但是,当我打印使用printAll方法的条目,并与那些在actaul文件配合他们,我没有找到他们匹配。这是打印的文件中没有的条目!

我在推广许多HashMaps(我没有展示),所以也许从其他文件的条目被打印。错误在哪里?

+2

请修复您的缩进,并给我们更多代表性的代码。例如,你在这里有一个'static'变量 - 我们不知道在加载多个地图时是否重用了这个变量。 – 2013-05-02 20:15:09

+1

'属性'_已经是一张地图(好了,'HashTable')。你为什么不能原样使用它? – 2013-05-02 20:16:31

+6

通过捕获它们并在catch块中不做任何事情来阻止完全忽略异常,并且您可能会明白出了什么问题,并专注于需要修复的部分 – 2013-05-02 20:17:05

回答

1

你正在加载一个不同的resume.properties文件给你认为你正在偷懒的那个文件。

检查名为resume.properties的其他文件的资源路径以找出它。

也可以直接从文件加载通过使用绝对路径来强制使用特定文件的:

properties.load(new FileInputStream("/some/path/resume.properties"); 

另一种可能性是,properties是正在使用一个静态变量其他地方,并且由于load()方法没有清除现有的值 - 它只是添加了属性 - 您可以看到以前将值加载到别处的值。