如何在java中对属性进行排序?

2022-09-02 00:00:43

我有一个对象,有时我需要添加其他对象。PropertiesProperties

Properties myBasicProps = this.getClass.getResourceAsStream(MY_PROPS_PATH);
...
Properties otherProps = new Properties();
otherProps.load(new StringReader(tempPropsString)); //tempPropsString contains my temporary properties
myBasicProps.putAll(otherProps);

我想在此之后进行排序。我不想获取所有键和值,对它们进行排序,然后将其全部放入新对象。有没有更好的方法?myBasicPropsCollections.sort()


答案 1

否,扩展不定义键或值的可预测排序顺序。java.util.Propertiesjava.util.Hashtable

您可以尝试将所有值转储到类似 中,这将对键施加自然排序。java.util.TreeMap


答案 2

您所要做的就是创建扩展属性的类。来源:java2s.com

import java.io.FileOutputStream;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

public class Main{
  public static void main(String[] args) throws Exception {
    SortedProperties sp = new SortedProperties();
    sp.put("B", "value B");
    sp.put("C", "value C");
    sp.put("A", "value A");
    sp.put("D", "value D");
    FileOutputStream fos = new FileOutputStream("sp.props");
    sp.store(fos, "sorted props");
  }

}
class SortedProperties extends Properties {
  public Enumeration keys() {
     Enumeration keysEnum = super.keys();
     Vector<String> keyList = new Vector<String>();
     while(keysEnum.hasMoreElements()){
       keyList.add((String)keysEnum.nextElement());
     }
     Collections.sort(keyList);
     return keyList.elements();
  }

}

它对我有用。