Java 如何修复setProperty或put for Properties类中的奇怪顺序

Java 如何修复setProperty或put for Properties类中的奇怪顺序,java,properties,Java,Properties,对于属性类的setProperty或put的排序,我遇到了一个两难的问题 我想保存一个已排序的属性文件。我已经准备好了排序类,但是当我执行setProperty或put时,排列会变得很奇怪 Properties tmp = new Properties(); tmp.setProperty("A1","B"); tmp.setProperty("A2","B"); tmp.setProperty("A3","B"); tmp.setProperty("A4","B"); tmp.setPrope

对于属性类的setProperty或put的排序,我遇到了一个两难的问题

我想保存一个已排序的属性文件。我已经准备好了排序类,但是当我执行setProperty或put时,排列会变得很奇怪

Properties tmp = new Properties();
tmp.setProperty("A1","B");
tmp.setProperty("A2","B");
tmp.setProperty("A3","B");
tmp.setProperty("A4","B");
tmp.setProperty("A5","B");
执行tmp.listSystem.out时的输出为:

使用put时也有相同的安排

我不知道为什么。。我只需要将排序后的属性保存在*.properties文件中


任何帮助都将不胜感激。谢谢

Properties类扩展了Hashtable,因此没有定义保证的排序顺序。您最好尝试使用树形图,因为它提供了键的自然排序顺序。但是,如果您想保存和加载,就必须滚动您自己的逻辑,因为这些操作不会出现在TreeMap上。如果您想查看这些的代码示例,请告诉我

Properties类扩展了Hashtable,因此没有定义保证的排序顺序。您最好尝试使用树形图,因为它提供了键的自然排序顺序。但是,如果您想保存和加载,就必须滚动您自己的逻辑,因为这些操作不会出现在TreeMap上。如果您想查看这些的代码示例,请告诉我

为什么需要对属性进行排序?如果要对属性进行排序,则很可能是您的设计错误。Java不关心属性排序。如果将属性保存到文件中,顺序看起来是随机的,但当您重新加载时,所有内容都将被正确加载和使用。没有必要为了任何可行的目的对它们进行排序。@sp00m这对调试很有用-想象一下一个大的未排序属性列表,就像从System.getProperties返回的列表一样,您正在查找file.encoding…我需要对它们进行排序以确保可读性。这不是必需的,但我希望能够读取文件大约50-60行以便于调试。为什么需要对它们进行排序?如果要对属性进行排序,则很可能是您的设计错误。Java不关心属性排序。如果将属性保存到文件中,顺序看起来是随机的,但当您重新加载时,所有内容都将被正确加载和使用。没有必要为了任何可行的目的对它们进行排序。@sp00m这对调试很有用-想象一下一个大的未排序属性列表,就像从System.getProperties返回的列表一样,您正在查找file.encoding…我需要对它们进行排序以确保可读性。这不是必需的,但我希望能够读取大约50-60行的文件以便调试。我目前正在使用树形图对原始属性文件进行排序。但我认为目前最好的解决方案是将输出硬写入属性文件..:/我想我只需要使用TreeMap并硬写属性文件。谢谢我目前正在使用树映射对原始属性文件进行排序。但我认为目前最好的解决方案是将输出硬写入属性文件..:/我想我只需要使用TreeMap并硬写属性文件。谢谢
-- listing properties --
A4=B
A3=B
A2=B
A1=B
A5=B