Java Properties 遍历方法
在Java中遍历Properties对象有几种常见方法,以下是几种主要方式:

使用 stringPropertyNames() 方法(Java 7+)
Properties props = new Properties();
// ... 填充properties
// 遍历所有键
for (String key : props.stringPropertyNames()) {
String value = props.getProperty(key);
System.out.println(key + " = " + value);
}
使用 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);
}
使用 propertyNames() 方法(旧方法)
Properties props = new Properties();
// ... 填充properties
// 遍历所有键(旧API,返回的是Enumeration)
Enumeration<?> propertyNames = props.propertyNames();
while (propertyNames.hasMoreElements()) {
String key = (String) propertyNames.nextElement();
String value = props.getProperty(key);
System.out.println(key + " = " + value);
}
使用 keySet() 方法
Properties props = new Properties();
// ... 填充properties
// 遍历所有键
for (Object key : props.keySet()) {
Object value = props.get(key);
System.out.println(key + " = " + value);
}
完整示例
import java.util.Enumeration;
import java.util.Map;
import java.util.Properties;
public class PropertiesTraversalExample {
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("name", "John");
props.setProperty("age", "30");
props.setProperty("city", "New York");
System.out.println("=== Method 1: stringPropertyNames() ===");
for (String key : props.stringPropertyNames()) {
System.out.println(key + " = " + props.getProperty(key));
}
System.out.println("\n=== Method 2: entrySet() ===");
for (Map.Entry<Object, Object> entry : props.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}
System.out.println("\n=== Method 3: propertyNames() ===");
Enumeration<?> propertyNames = props.propertyNames();
while (propertyNames.hasMoreElements()) {
String key = (String) propertyNames.nextElement();
System.out.println(key + " = " + props.getProperty(key));
}
System.out.println("\n=== Method 4: keySet() ===");
for (Object key : props.keySet()) {
System.out.println(key + " = " + props.get(key));
}
}
}
注意事项
stringPropertyNames()是Java 7引入的,返回所有键的集合,键都是String类型propertyNames()返回的是Enumeration,是旧API,需要强制类型转换entrySet()和keySet()返回的是Map接口的标准视图- 如果Properties中包含非String类型的键,使用
stringPropertyNames()会跳过这些键
选择哪种方法取决于你的Java版本和个人偏好,stringPropertyNames() 是最现代和推荐的方式。

