只是想知道。 java.util.Properties
Vs java.util.HashMap<String, String>
之间有什么区别?哪个更好?
答案 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.Properties
是Hashtable<Object,Object>
,因此您可以将其视为java.util.HashMap<String, String>
的同步形式
属性很好处理...属性:)如果你将它用于其他目的,那么你的选择将取决于程序中的并发管理