杰瑞科技汇

java properties 遍历

Java Properties 遍历方法

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

java properties 遍历-图1
(图片来源网络,侵删)

使用 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));
        }
    }
}

注意事项

  1. stringPropertyNames() 是Java 7引入的,返回所有键的集合,键都是String类型
  2. propertyNames() 返回的是Enumeration,是旧API,需要强制类型转换
  3. entrySet()keySet() 返回的是Map接口的标准视图
  4. 如果Properties中包含非String类型的键,使用stringPropertyNames()会跳过这些键

选择哪种方法取决于你的Java版本和个人偏好,stringPropertyNames() 是最现代和推荐的方式。

java properties 遍历-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇