我有一个巨大的文件,其中包含 key=value 格式的行。如果我希望使用 java 中 Properties 类的 getProperty() 方法获取特定键的值,是否在执行 getProperty() 操作之前将完整文件加载到内存中?
我读过Properties 类是一个HashTable 实现java。所以我想知道整个属性文件是否被加载到哈希表中,甚至使用属性类来获取单个属性的值。
我有一个巨大的文件,其中包含 key=value 格式的行。如果我希望使用 java 中 Properties 类的 getProperty() 方法获取特定键的值,是否在执行 getProperty() 操作之前将完整文件加载到内存中?
我读过Properties 类是一个HashTable 实现java。所以我想知道整个属性文件是否被加载到哈希表中,甚至使用属性类来获取单个属性的值。
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
.