如何实现Properties保持有序

如何实现Properties保持有序?

默认效果:Properties配置文件:读取配置文件后,加载到内存中的顺序是随机的,不能保证和原文件的顺序一致

原因:因为 Properties 是继承自 Hashtable 的,Hashtable是无序的

解决方法:是继承自 Properties,覆盖原来的 put/keys,keySet,stringPropertyNames 即可,其中用一个 LinkedHashSet 来保存它的所有 key

 

import java.util.Collections;

import java.util.Enumeration;

import java.util.LinkedHashSet;

import java.util.Properties;

import java.util.Set;

 

/**

 * OrderedProperties

 * @author 程序猫

 * @date 2019-03-27

 */

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;

    }

}

 

调用方法:

Properties props = new OrderedProperties();

props.load(fileInputStream);

猜你喜欢

转载自blog.csdn.net/qq_39326137/article/details/88855397