这是一种在内存和计算方面访问(键,值)对的更有效方法:使用properties.getProperty(“key”)从属性文件读取或将整个属性文件加载到HashMap中程序的开头,然后在HashMap中查找键?
此外,如果重复使用属性中只有一个值,那么最好将值存储在成员变量中并访问它或每次使用properties.getProperty(“key”)查找它吗? / p>
答案 0 :(得分:14)
properties.getProperty("key")
是来自Hashtable的查找,它是Properties对象。执行Properties.load()
时,从文件中加载条目并将它们存储到Properties对象中,该对象扩展了Hashtable。对属性的每次后续访问都会在Hashtable中进行查找。再也没有文件IO了。
当然,访问成员变量比从HashMap中的键访问值稍快一些,但我怀疑这是否会在性能上获得任何重要性。 HashMap查找是O(1),并且很快。在注意到差异之前,您可能需要数百万次查找。为你做最可读的事情。
答案 1 :(得分:1)
实际上System.getProperty()
内部使用java.util.Properties
对象。 Properties
类延伸HashTable<Object,Object>
,因此通过明确使用HashMap
来获取性能不太可能。
但是,如果您经常使用少量属性,那么将它们存储在变量中肯定会有所帮助。 HashTable / HashMap查找和变量访问可能都是O(1),但HashTable查找肯定有更大的常数因子。