我在属性文件中保存了几个值,但每当我打开文件时,这些值都不会按照我编码的顺序写入。
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
如您所见,订单完全不受编码影响。我很好奇为什么会这样。它显然没有按字母顺序排序,我看不出有任何其他原因会发生这种情况。
答案 0 :(得分:4)
Properties
类扩展了Hashtable
类。
基于散列的集的迭代顺序是未定义的。
顺便提一下,Properties
扩展 Hashtable
而不是使用 Hashtable这一事实被认为是众多设计中的“错误”之一JDK。
有关其他“错误”的简要列表,请参阅this answer。
答案 1 :(得分:1)
属性系统很可能正在使用某些描述的支持HashMap
。这样您可以多次设置相同的属性,它将更新当前值。为了有效地执行此操作,需要HashMap
。因此,订单完全取决于HashMap
的实施(不保证按字母顺序排列)