按顺序从 Java 属性文件中提取值?

新手上路,请多包涵

我有一个属性文件,其中值的顺序很重要。我希望能够遍历属性文件并根据原始文件的顺序输出值。

但是,由于 Properties 文件由不维护插入顺序的 Map 支持,如果我错了请纠正我, 迭代器以错误的顺序返回值

这是我正在使用的代码

Enumeration names = propfile.propertyNames();
while (names.hasMoreElements()) {
    String name = (String) names.nextElement();
    //do stuff
}

除了编写我自己的自定义文件解析器之外,还有什么方法可以恢复属性吗?

原文由 James McMahon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 406
2 个回答

如果您可以更改属性名称,您可以在它们前面加上数字或其他可排序的前缀,然后对 Properties KeySet 进行排序。

原文由 Clint 发布,翻译遵循 CC BY-SA 2.5 许可协议

扩展 java.util.Properties ,同时覆盖 put()keys()

 import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.HashMap;

public class LinkedProperties extends Properties {
    private final HashSet<Object> keys = new LinkedHashSet<Object>();

    public LinkedProperties() {
    }

    public Iterable<Object> orderedKeys() {
        return Collections.list(keys());
    }

    public Enumeration<Object> keys() {
        return Collections.<Object>enumeration(keys);
    }

    public Object put(Object key, Object value) {
        keys.add(key);
        return super.put(key, value);
    }
}

原文由 Dominique Laurent 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题