杰瑞科技汇

java properties遍历

Java Properties 遍历方法

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

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

方法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);
}

注意事项

  1. stringPropertyNames()返回所有键的集合,这些键都是字符串类型,是最推荐的方式
  2. entrySet()keySet()返回的键和值都是Object类型,需要适当类型转换
  3. Enumeration是遗留类,在新代码中不推荐使用
  4. 如果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()方法,因为它提供了类型安全的字符串键遍历。

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