SortedProperties.java

package com.jsql.view.swing.dialog.translate;

import java.util.*;
import java.util.stream.Collectors;

public class SortedProperties extends Properties {
    @Override
    public synchronized Enumeration<Object> keys() {
        Enumeration<Object> keysEnum = super.keys();
        List<String> keyList = new ArrayList<>();
        while (keysEnum.hasMoreElements()) {
            keyList.add((String) keysEnum.nextElement());
        }
        Collections.sort(keyList);
        return Collections.enumeration(keyList.stream()
            .map(s -> (Object) s)
            .collect(Collectors.toList()));
    }
    @Override
    public Set<Map.Entry<Object, Object>> entrySet() {
        Map<Object, Object> treeMap = new TreeMap<>();
        Set<Map.Entry<Object, Object>> entrySet = super.entrySet();
        for (Map.Entry<Object, Object> entry : entrySet) {
            treeMap.put(entry.getKey(), entry.getValue());
        }
        return Collections.synchronizedSet(treeMap.entrySet());
    }
}