为什么我不能按顺序读取 .properties 文件?

Rey*_*esh 0 java properties-file

我有一个这样的 label.properties 文件:

text1:firstname
text2:middlename
text3:lastname
text4:username
Run Code Online (Sandbox Code Playgroud)

我使用此代码读取属性文件

package test;

import java.util.Enumeration;
import java.util.ResourceBundle;


public class labelclass {

    public static String read(int n) {

        ResourceBundle rb = ResourceBundle.getBundle("myfolder.label");
        Enumeration <String> keys = rb.getKeys();
        while (keys.hasMoreElements()) {
            for(int i=1; i<=n; i++){
                    String key = keys.nextElement();
            }
            String value = rb.getString(key);
            return value;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

如果我打电话read(2),它应该返回middlename。但它返回它返回firstname 的顺序是这样的:

text2:middlename
text1:firstname
text4:username
text3:lastname
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

mar*_*612 5

.properties文件由ResourceBundle加载到HashSet 中,它不保留顺序。这您收到Enumeration对象只是集合上的迭代器。

我查看了 ListResourceBundle类,不幸的是它也返回了一个不保持顺序的集合上的 Enumeration 对象。

编辑.properties将在PropertyResourceBundle 中使用InputStream加载并存储在Properties的实例中,该实例在内部由Hashtable表示,该实例也不维护顺序。所以订单在这个过程中很早就丢失了,后来又丢失了好几次。

  • 实际上,它是哈希表... (3认同)