随手记两笔

coder...从来不曾无聊过...因为有些乐趣只有我们自己才懂

保持顺序的 Java Properties 类

Java 的 Properties 加载属性文件后是无法保证输出的顺序与文件中一致的,因为 Properties 是继承自 Hashtable 的, key/value 都是直接存在 Hashtable 中的,而 Hashtable 是不保证进出顺序的。

文章中已经给提供了代码,思路是继承自 Properties,覆盖原来的 put/keys,keySet,stringPropertyNames 即可,其中用一个 LinkedHashSet 来保存它的所有 key。完整代码如下:

[java] view plain copy
  1. <span style="font-family:Comic Sans MS;">package com.mstar.investmeplugin;  
  2.    
  3. import java.util.Collections;  
  4. import java.util.Enumeration;  
  5. import java.util.LinkedHashSet;  
  6. import java.util.Properties;  
  7. import java.util.Set;  
  8.    
  9. /** 
  10.  * OrderedProperties 
  11.  * @author liii 
  12.  * @date 2015-07-10 
  13.  */  
  14. public class OrderedProperties extends Properties {  
  15.    
  16.     private static final long serialVersionUID = -4627607243846121965L;  
  17.        
  18.     private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();  
  19.    
  20.     public Enumeration<Object> keys() {  
  21.         return Collections.<Object> enumeration(keys);  
  22.     }  
  23.    
  24.     public Object put(Object key, Object value) {  
  25.         keys.add(key);  
  26.         return super.put(key, value);  
  27.     }  
  28.    
  29.     public Set<Object> keySet() {  
  30.         return keys;  
  31.     }  
  32.    
  33.     public Set<String> stringPropertyNames() {  
  34.         Set<String> set = new LinkedHashSet<String>();  
  35.    
  36.         for (Object key : this.keys) {  
  37.             set.add((String) key);  
  38.         }  
  39.    
  40.         return set;  
  41.     }  
  42. }</span>  

调用方法


[java] view plain copy
  1. <span style="font-family:Comic Sans MS;">Properties props = new OrderedProperties();  
  2. props.load(fileInputStream);  
  3.    
  4. //通过 keys(), keySet() 或 stringPropertyNames 来遍历都能保证按文件中的顺序输出</span>  
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013749540/article/details/51556816
文章标签: Properties
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭