2

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

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

4

1 回答 1

2

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

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

源代码中,您可以看到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.

于 2015-09-03T14:45:14.710 回答