我是Java的新手,正在尝试学习类属性。我想出了下面的代码。但是,当我运行代码时,我注意到random.txt中存储的三个属性与代码执行的顺序相反。为什么会这样?有人可以赐教吗?在此先感谢您的帮助!
Properties p1 = new Properties();
try (OutputStream os1 = new FileOutputStream("random.txt")){
p1.setProperty("1", "one");
p1.setProperty("2", "two");
p1.setProperty("3", "three");
p1.store(os1, "comment");
} catch(IOException e){
e.printStackTrace();
}
答案 0 :(得分:2)
Properties
类用于维护键的列表,其中键是String,值也是String。
Properties
类扩展了Hashtable
类。
在JDK中未定义基于散列的集的迭代顺序。
但是,您可以通过创建自己的属性子类并覆盖put()
和setProperty()
方法,以原始顺序从属性文件中提取值。
答案 1 :(得分:1)
请注意,Properties
适用于(扩展)Hashtable
。
地图固有地"无序"。
如果您想了解更多信息并真正存储订购数据,请查看此链接How can I write Java Properties in a defined order。这个问题之前已经得到了回答:)
答案 2 :(得分:1)
你可以在每个setProperty之后调用store,如上所述,商店正在使用的数据类型可能是LIFO(后进先出),因此最后要设置的是保存的第一件事。
尝试在每个设置属性后调用store!