java.util.Properties Vs java.util.Map <string,string =“”> </string,>

时间:2012-02-27 10:14:00

标签: java properties hashmap

只是想知道。 java.util.Properties Vs java.util.HashMap<String, String>之间有什么区别?哪个更好?

6 个答案:

答案 0 :(得分:22)

这两个实用类有不同的用途。映射,或者在您的情况下,HashMap是通用存储对象,您可以使用唯一键和它们指向的值。 HashMap可以将任何对象类型作为其键,将任何对象类型作为其值。

然而,

java.util.Properties是一个特殊用途的地图。它被开发用于读取/写入属性文件。它有特殊的方法[见load(..)]。地图没有。

因此,您可以使用不同的情况。您需要阅读属性的位置,最好使用“属性”。并且您希望将查找值存储在某些逻辑中的位置,您可以使用HashMap<String, String>

没有严格的规则,您可以互换使用HashMap<String, String>Properties。但作为工程师,请使用正确的工具完成任务

答案 1 :(得分:12)

它们是相似的,但从设计的角度来看,Properties类被认为是java的“错误”之一,因为 a Hashtable(而不是使用一个Hashtable)。它应该是一个界面。

在可能的情况下始终使用摘要,因此首选:

Map<String, String> stuff = new HashMap<String, String>();

除非你拥有,否则趋向于避免使用Properties

答案 2 :(得分:3)

Propeties扩展了Hashtable,默认情况下是同步的。默认情况下,HashMap不同步。您正在进行内置线程安全交易,以获得轻微的性能提升,这是您可能无法衡量的。

Properties是Java 1.0中较旧的类。 HashMap是Joshua Bloch新版集合API的一部分。

答案 3 :(得分:2)

你有线程安全的现代ConcurrentHashMap<String, String>。除非您使用Properties来阅读.properties文件,否则请不要使用{{1}}。

答案 4 :(得分:1)

Properties类是Hashtable的扩展,基本上添加了以设置格式从磁盘写入+读取的功能(像这样的文本值对):

key1=value1
key2=value2

如果要将其存储到磁盘并使用该格式,请使用“属性”,否则使用HashMap或Hashtable。

答案 5 :(得分:0)

java.util.PropertiesHashtable<Object,Object>,因此您可以将其视为java.util.HashMap<String, String>的同步形式

属性很好处理...属性:)如果你将它用于其他目的,那么你的选择将取决于程序中的并发管理