Java 属性类getProperty()内部
我有一个巨大的文件,其中包含key=value格式的行。 如果我希望在java中使用Properties类的getProperty()方法获取特定键的值,那么在执行getProperty()操作之前是否将完整的文件加载到内存中 我已经读到Properties类是一个哈希表实现java。因此,我想知道是否将整个属性文件加载到哈希表中,甚至使用properties类获取单个属性的值。TL;DR:整个文件被加载到内存中 不是Java 属性类getProperty()内部,java,memory-management,properties,hashtable,getproperty,Java,Memory Management,Properties,Hashtable,Getproperty,我有一个巨大的文件,其中包含key=value格式的行。 如果我希望在java中使用Properties类的getProperty()方法获取特定键的值,那么在执行getProperty()操作之前是否将完整的文件加载到内存中 我已经读到Properties类是一个哈希表实现java。因此,我想知道是否将整个属性文件加载到哈希表中,甚至使用properties类获取单个属性的值。TL;DR:整个文件被加载到内存中 不是哈希表实现,而是哈希表。i、 它是一种基于内存哈希的查找 从中,您可以看到ge
哈希表
实现,而是哈希表
。i、 它是一种基于内存哈希的查找
从中,您可以看到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)读取到哈希表中
是的,调用load方法时将加载完整的表。load方法基本上遍历每一行,并使用“=”字符将其拆分,并将值存储在映射中“=”前面和后面。