属性文件未按正确顺序存储

时间:2013-07-13 23:33:53

标签: java properties

我在属性文件中保存了几个值,但每当我打开文件时,这些值都不会按照我编码的顺序写入。

save.setProperty("SN", "foo");
save.setProperty("ID", "bar");
save.setProperty("TN", "example");
save.setProperty("TC", "generic");
save.setProperty("SW", "incorrect");
save.setProperty("NW", "order");
save.store(new FileOutputStream(file.getAbsolutePath(), null);

这是打开文件时文件的外观:

#Sat Jul 13 19:28:59 EDT 2013
ID=bar
SW=incorrect
TC=generic
TN=example
NW=order
SN=foo

如您所见,订单完全不受编码影响。我很好奇为什么会这样。它显然没有按字母顺序排序,我看不出有任何其他原因会发生这种情况。

2 个答案:

答案 0 :(得分:4)

Properties类扩展了Hashtable类。

基于散列的集的迭代顺序是未定义的。


顺便提一下,Properties 扩展 Hashtable而不是使用 Hashtable这一事实被认为是众多设计中的“错误”之一JDK。

有关其他“错误”的简要列表,请参阅this answer

答案 1 :(得分:1)

属性系统很可能正在使用某些描述的支持HashMap。这样您可以多次设置相同的属性,它将更新当前值。为了有效地执行此操作,需要HashMap。因此,订单完全取决于HashMap的实施(不保证按字母顺序排列)