All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zodiac.sdk.nio.common.OrderedProperties Maven / Gradle / Ivy

There is a newer version: 1.6.8
Show newest version
package org.zodiac.sdk.nio.common;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.Collections;
import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.Set;

public class OrderedProperties extends Properties {

    private static final long serialVersionUID = 6926554598424659621L;

    private final Set keys = new LinkedHashSet<>();

    public OrderedProperties() {}

    public OrderedProperties(Properties defaults) {
        super(defaults);
    }

    public OrderedProperties(InputStream inputStream) throws IOException {
        this.load(inputStream);
    }

    public OrderedProperties(Reader reader) throws IOException {
        this.load(reader);
    }

    @Override
    public Enumeration keys() {
        return Collections.enumeration(keys);
    }

    /**
     * 只是把key有序的存到{@link OrderedProperties#keys} 取值的时候,根据有序的keys可以有序的取出所有value。
* 依然调用父类的put方法,也就是key value,键值对还是存在hashTable里. 只是现在多了个存key的属性{@link OrderedProperties#keys}。 * * @param key key * @param value value * @return value对象 */ @Override public Object put(Object key, Object value) { keys.add(key); return super.put(key, value); } /** * 因为复写了这个方法,在(方式一)的时候才输出有序。 * * @return key列表 */ @Override public Set stringPropertyNames() { Set set = new LinkedHashSet<>(); for (Object key : this.keys) { set.add((String)key); } return set; } /** * 因为复写了这个方法,在(方式二)的时候,才输出有序。 * * @return key列表 */ @Override public Set keySet() { return keys; } /** * 因为复写了这个方法,在(方式四)的时候,才输出有序。 * * @return key列表 */ @Override public Enumeration propertyNames() { return Collections.enumeration(keys); } }