Java 属性集合Properties的六种遍历处理方式

Java Properties集合的6种遍历处理方式:

采用集合处理方式的,调用Properties类的 xxSet()方法,调用Properties类的其它方法则是返回枚举数据结构Enumeration。

下面以列出计算机电脑配置的属性为例,给出各种方法,程序中有必要的说明:

import java.util.*;
import java.util.Map.Entry;

public class Example11 {
    public static void main(String[] args) {
        // 创建属性集合对象
        Properties props = new Properties();
        // 添加元素
        props.setProperty("CPU", "Intel 酷睿i5 8400T");
        props.setProperty("内存", "8GB DDR4");
        props.setProperty("硬盘", "128GB+1TB");
        props.setProperty("显卡", "NVIDIA GeForce MX130 2GB");
        
        // 打印属性列表的各种方法
        
        // 下面方法1和方法2不是遍历的处理方式,只能用于列表。其余的方法遍历方式,可适应于一般性的处理需求。
        
        // 方法1: 直接使用toString() 
        System.out.println("------------------------------");
        System.out.println(props.toString());

        // 方法2: 使用输出流的list 
        System.out.println("------------------------------");
        props.list(System.out);
        
        // 方法3:forEach + lambda表达式   
        System.out.println("------------------------------");
        props.forEach((k, v) -> System.out.println(k + ": " + v) ); 

        // 方法4:调用stringPropertyNames() 得到Set<String>
        //       (当键和值都为String时才可以调用次方法)
        System.out.println("------------------------------");
        Set<String> set = props.stringPropertyNames();
        for (String key : set) {
            String value = props.getProperty(key);
            System.out.println(key + ": " + value);
        }
        
        // 方法5:调用propertyNames()
        System.out.println("------------------------------");
        Enumeration<?> enu = props.propertyNames();
        while (enu.hasMoreElements()) {
            String key = (String)enu.nextElement();
            String value = props.getProperty(key);
            System.out.println(key + ": " + value);
        }

        // 方法6:调用entrySet()
        System.out.println("------------------------------");
        Set<Entry<Object, Object>> set2 = props.entrySet();
        for (Entry<Object, Object> propi : set2) {
            String key = (String)propi.getKey();
            String value = (String)propi.getValue();
            System.out.println(key + ": " + value);
        }

        // 方法7:调用keySet()
        System.out.println("------------------------------");
        Set<Object> set3 = props.keySet();
        for (Object propi : set3) {
            String key = (String)propi;
            String value = (String)props.get(key);
            System.out.println(key + ": " + value);
        }

        // 方法8:调用keys() 得到Enumeration<Object>
        System.out.println("------------------------------");
        Enumeration<Object> enu3 = props.keys();
        while (enu3.hasMoreElements()) {
            Object key = enu3.nextElement();
            String value = (String)props.get(key);
            System.out.println(key + ": " + value);
        }
        
        /*
        // 方法9:调用elements()会抛出异常,其实这类似调用entrySet,见上面方法6。
        System.out.println("------------------------------");
        Enumeration<Object> enu2 = props.elements();
        while (enu2.hasMoreElements()) {
            // 下面这条语句试图把一个Object强制转换为Map.Entry<Object, Object>时抛出异常
            Map.Entry<Object, Object> entry = (Map.Entry<Object, Object>)enu2.nextElement();
            Object key = entry.getKey();
            String value = (String)entry.getValue();
            //String value = (String)entry.get();
            System.out.println(key + ": " + value);
        }
        */        
    }
}
/*
运行结果:
------------------------------
{硬盘=128GB+1TB, 显卡=NVIDIA GeForce MX130 2GB, CPU=Intel 酷睿i5 8400T, 内存=8GB DDR4}
------------------------------
-- listing properties --
硬盘=128GB+1TB
CPU=Intel 酷睿i5 8400T
显卡=NVIDIA GeForce MX130 2GB
内存=8GB DDR4
------------------------------
内存: 8GB DDR4
显卡: NVIDIA GeForce MX130 2GB
CPU: Intel 酷睿i5 8400T
硬盘: 128GB+1TB
------------------------------
硬盘: 128GB+1TB
CPU: Intel 酷睿i5 8400T
显卡: NVIDIA GeForce MX130 2GB
内存: 8GB DDR4
------------------------------
硬盘: 128GB+1TB
CPU: Intel 酷睿i5 8400T
显卡: NVIDIA GeForce MX130 2GB
内存: 8GB DDR4
------------------------------
硬盘: 128GB+1TB
显卡: NVIDIA GeForce MX130 2GB
CPU: Intel 酷睿i5 8400T
内存: 8GB DDR4
------------------------------
硬盘: 128GB+1TB
显卡: NVIDIA GeForce MX130 2GB
CPU: Intel 酷睿i5 8400T
内存: 8GB DDR4
------------------------------
硬盘: 128GB+1TB
显卡: NVIDIA GeForce MX130 2GB
CPU: Intel 酷睿i5 8400T
内存: 8GB DDR4
*/

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值