-2

HashMap如何使用存储在单独.properties文件中的所有条目填充我的?我有一个文件与Eclipse 中的 bin 文件夹中resume.properties的文件一起放置。class

该文件由这样的条目组成

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 方法打印条目并将它们与实际文件中的条目匹配时,我发现它们不匹配。有一些已打印的条目在文件中不存在!

我填充了许多 HashMap(我没有显示),因此可能会打印来自其他文件的条目。错误在哪里?

4

1 回答 1

1

您正在将不同的 resume.properties 文件加载到您认为自己正在闲逛的文件中。

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

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

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

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

于 2013-05-02T20:31:33.937 回答