Java 属性类getProperty()内部

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

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

我已经读到Properties类是一个哈希表实现java。因此,我想知道是否将整个属性文件加载到哈希表中,甚至使用properties类获取单个属性的值。

TL;DR:整个文件被加载到内存中 不是
哈希表
实现,而是
哈希表
。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方法基本上遍历每一行,并使用“=”字符将其拆分,并将值存储在映射中“=”前面和后面。