我在java中多次使用属性文件来存储静态值并从程序中删除硬编码的代码。但我用它只有几个说数百个值。但是我很好奇属性文件实际上是如何工作的?
他们如何操纵和存储文件中给出的值?
它们的效率如何,即如果我们在属性文件中使用数千个值,它是否与具有较小值的属性文件一样有效? 如果需要处理线性增加或处理开销很高?
答案 0 :(得分:3)
Properties类扩展了Hashtable,因此它与使用String键的Hashtable一样高效,这非常有效。
答案 1 :(得分:1)
使用java.util.Properties
操作属性文件的一个问题是删除任何注释。
考虑改为使用org.apache.felix.utils.properties.Properties
(它建立在<{p>}的java.util.AbstractMap<K,V>
之上
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.utils</artifactId>
<version>1.6.0</version>
</depenency>
将保留,评论,订购,空白等。
插入的效果成本是 O(log(n))和条目数。
答案 2 :(得分:0)
你可以在代码中看到
public class Properties extends Hashtable<Object,Object>
{
// ... code
}
它正在扩展HashTable
类,因此效率很高,您还可以在setProperty
类中检查store
,load
和Properties
方法的javadoc。
答案 3 :(得分:0)
这里是source code;它非常直截了当。文件是read,在一个O(n)传递给Hashtable
,其中有O(1)插入和检索。Writing返回文件的属性类似于O(n) 。成千上万的钥匙,甚至成千上万的钥匙都不会有问题。
听起来你想象Properties
类每次修改文件时重新读取文件,或者每次访问属性时都重新读取文件。这不是Properties
的工作原理,这样做会非常浪费。 Properties
本质上是一个美化的Map
实现,具有读取和写入文件内容的额外方法。