java 有顺序写入读取Properties配置文件

来源:互联网 发布:qq三国120js最强红武器 编辑:程序博客网 时间:2024/06/04 19:23

Java 的 Properties 加载属性文件后是无法保证输出的顺序与文件中一致的,因为 Properties 是继承自 hashtable 的, key/value 都是直接存在 Hashtable 中的,而 Hashtable 是不保证进出顺序的。 总有时候会有关心顺序一致的需求,恰如有 org.apache.commons.collections.OrderdMap(其实用 LinkedHashMap 就是保证顺序) 一样,下面就是写一个 OrderedProperties,只要继承自 Properties,覆盖原来的 put/keys,keySet,stringPropertyNames 即可,其中用一个 LinkedHashSet 来保存它的所有 key

下面是完整代码:

package com.gzu.application;import java.util.Collections;import java.util.Enumeration;import java.util.LinkedHashSet;import java.util.Properties;import java.util.Set;/** * 用于指定properites文件的存储顺序和输入顺序一样,使得顺序不发生改变 * OrderedProperties * @author wxq * @date 2016-09-26 */public class OrderedProperties extends Properties {    private static final long serialVersionUID = -4627607243846121965L;    private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();    public Enumeration<Object> keys() {        return Collections.<Object> enumeration(keys);    }    public Object put(Object key, Object value) {        keys.add(key);        return super.put(key, value);    }    public Set<Object> keySet() {        return keys;    }    public Set<String> stringPropertyNames() {        Set<String> set = new LinkedHashSet<String>();        for (Object key : this.keys) {            set.add((String) key);        }        return set;    }}
0 0
原创粉丝点击