Java Properties 遍历方法
在Java中,Properties类是Hashtable的子类,用于处理键值对形式的配置信息,以下是几种遍历Properties对象的方法:

方法1:使用stringPropertyNames()和getProperty()
Properties props = new Properties();
// 填充Properties对象...
// 遍历所有键
for (String key : props.stringPropertyNames()) {
String value = props.getProperty(key);
System.out.println(key + " = " + value);
}
方法2:使用entrySet()遍历
Properties props = new Properties();
// 填充Properties对象...
// 遍历键值对
for (Map.Entry<Object, Object> entry : props.entrySet()) {
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + " = " + value);
}
方法3:使用keySet()遍历
Properties props = new Properties();
// 填充Properties对象...
// 遍历所有键
for (Object key : props.keySet()) {
Object value = props.get(key);
System.out.println(key + " = " + value);
}
方法4:使用Enumeration(传统方式)
Properties props = new Properties();
// 填充Properties对象...
// 使用Enumeration遍历键
Enumeration<?> e = props.propertyNames();
while (e.hasMoreElements()) {
String key = (String) e.nextElement();
String value = props.getProperty(key);
System.out.println(key + " = " + value);
}
注意事项
stringPropertyNames()返回所有键的集合,这些键都是字符串类型,是最推荐的方式entrySet()和keySet()返回的键和值都是Object类型,需要适当类型转换Enumeration是遗留类,在新代码中不推荐使用- 如果Properties对象是从文件加载的,确保正确处理字符编码(特别是中文等非ASCII字符)
示例:从文件加载并遍历Properties
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesExample {
public static void main(String[] args) {
Properties props = new Properties();
try (FileInputStream fis = new FileInputStream("config.properties")) {
props.load(fis);
// 方法1:推荐方式
System.out.println("方法1:使用stringPropertyNames()");
for (String key : props.stringPropertyNames()) {
System.out.println(key + " = " + props.getProperty(key));
}
// 方法2:使用entrySet()
System.out.println("\n方法2:使用entrySet()");
for (Map.Entry<Object, Object> entry : props.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
选择哪种方法取决于你的具体需求和代码风格,对于现代Java代码,推荐使用stringPropertyNames()方法,因为它提供了类型安全的字符串键遍历。

