保持顺序的 Java Properties 类

原创 2016年06月01日 16:09:01
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>  
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

读配置文件可以保持顺序的 Java Properties 类

序 前几天,公司项目中有一个需求是读取配置文件的,而且最好能够保证加载到内存中的顺序能够和配置文件中的顺序一致,但是,如果使用 jdk 中提供的 Properties 类的话,读取配置文件后,加载...

Java Properties类 按输入顺序输出,每条添加注释

今天想把输入Property类的信息,输出看一下,输出之后发现顺序是乱的,后来看了代码才明白怎么回事,于是决定自己瞎写一个,经测试还能用。望各位大神观摩指导。。。。 import java.io...

java类读取properties文件

  • 2016年01月25日 17:48
  • 2KB
  • 下载

Java中的一个properties类

  • 2015年04月19日 08:22
  • 6KB
  • 下载

黑马程序员:Java基础总结----集合与IO的结合[Properties类]

黑马程序员:Java基础总结 集合与IO的结合[Properties类]  ASP.Net+Android+IO开发、.Net培训、期待与您交流! ...

Java写的Properties读写类

  • 2012年11月21日 11:11
  • 10KB
  • 下载

Java中Properties类的使用(转)

在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件)。   Properties的构造函数有两个,一个不带参...

Java-发送邮件(附件、图片)---(三)类-Properties、Session、MimeMessage

1、java.util.Properties类 java.util.Properties是对properties这类配置文件的映射。支持key-value类型和xml类型两种。key-value类型...
  • luckycz
  • luckycz
  • 2015年07月21日 10:23
  • 389

黑马程序员---2015.6.26java基础笔记--File类--Properties--PrintStream--SequenceInputStream--RandomAccessFile

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1. import java.io.*; class FileDemo2 { p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:保持顺序的 Java Properties 类
举报原因:
原因补充:

(最多只允许输入30个字)