属性类getProperty()内部

时间:2015-09-03 14:41:01

标签: java memory-management properties hashtable getproperty

我有一个巨大的文件,其中包含key = value格式的行。 如果我希望在java中使用Properties类的getProperty()方法获取特定键的值,是否在执行getProperty()操作之前将完整文件加载到内存中?

我已经读过Properties类是一个HashTable实现java。所以我想知道整个属性文件是否加载到HashTable中,甚至是使用Properties Class获取单个属性的值。

1 个答案:

答案 0 :(得分:2)

TL; DR:整个文件被加载到内存

java.util.Properties不是HashTable实施, HashTable。即它是基于内存中散列的查找。

source code,您可以看到getProperty的实施只需委托给super.get HashTable.get

public String getProperty(String key) {
    Object oval = super.get(key);
    String sval = (oval instanceof String) ? (String)oval : null;
    return ((sval == null) && (defaults != null)) ? defaults.getProperty(key) : sval;
}

load方法将属性文件(.properties或XML)读入HashTable