5

在内存和计算方面,这是访问(键,值)对的一种更有效的方法:使用 properties.getProperty("key") 从属性文件中读取或将整个属性文件加载到开头的 HashMap 中程序然后在HashMap中查找键?

此外,如果重复使用属性中的一个值,是否将值存储在成员变量中并访问它或每次使用 properties.getProperty("key") 查找它会更好?

4

2 回答 2

15

properties.getProperty("key")是从作为 Properties 对象的 Hashtable 中查找的。当您这样做时Properties.load(),您从文件中加载条目并将它们存储到扩展 Hashtable 的 Properties 对象中。对属性的每次后续访问都会在 Hashtable 中进行查找。不再有文件 IO。

当然,访问成员变量比从 HashMap 中的键访问值要快一些,但我怀疑这是您在性能上获得任何显着的地方。HashMap 查找是 O(1),而且非常快。在注意到差异之前,您可能需要数百万次查找。做最适合你的事情。

于 2012-05-25T14:59:07.103 回答
1

实际上在内部System.getProperty()使用了一个java.util.Properties对象。类Propertiesextends HashTable<Object,Object>,所以 sou 不太可能通过显式使用 a 来获得很多性能HashMap

但是,如果您经常使用很少的属性,那么将它们存储在变量中肯定会有所帮助。HashTable/HashMap 查找和变量访问可能都是 O(1),但是 HashTable 查找肯定有一个更大的常数因子。

于 2012-05-25T15:04:41.333 回答