Iterator的使用以及map初始化赋值

这篇博客探讨了Java中Iterator的使用方法,并分享了一次性为Map进行初始化赋值的经验。通过实例代码,作者展示了如何在面对多层嵌套Map时,不仅逐层赋值,还能一次性完成所有嵌套的初始化,提升编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA基本知识点的使用原则,死记后去用的来理解,理解死记后的去使用,最终时一定得去用才能六六的,才能越来越看起来你高级大笑亘古不变的使用你熟练使用的而且用的没技术含量的那你就永远那么low

之前map多层嵌套时都是一层层的变量去赋值,没尝试过初始化赋值也没去一次性把嵌套的全部赋值进去,以下代码第一次写,连看带搜带自己写的最终写出来了

Map<String,Map<String,Object[]>> map = new HashMap<String,Map<String,Object[]>>(){
    {
        put(IcuOdoModel.class.getSimpleName(),new HashMap<String, Object[]>(){
            {
                put("totalVoltage",new Object[]{0xff});
                put("mileage",new Object[]{0xFFFFFF*0.1f});
            }
        });

        put(PepsDataModel.class.getSimpleName(),new HashMap<String, Object[]>(){
            {
                put("aprRate",new Object[]{0xFF});
                put("mcNm",new Object[]{0xFF-120});
            }
        });
    }
};
Map<String,Object[]> fmap = map.get("PepsDataModel");
Iterator<Map.Entry<String,Object[]>> tmap = fmap.entrySet().iterator();
while(tmap.hasNext()){
   Map.Entry<String,Object[]>  entry = tmap.next();
   String attr = entry.getKey();
   Object[] objarr = entry.getValue();
   System.out.println(objarr);
}

好的,我们可以探讨一下如何通过迭代器给 `Map` 遍历并对其元素进行操作。 ### 使用迭代器遍历 Map 在 Java 中,通常我们不会直接对 `Map` 进行赋值操作(因为这可能会改变键的存在状态),而是更多地访问和修改已有的映射。对于遍历来说,有几种常见的方式可以利用迭代器来处理: #### 1. **基于 EntrySet 的迭代** 这是最常用的一种方式,它允许你在遍历时同时获取 key 和 value,并且能够安全地更新这些 entry 对象的 value 值而不会影响到 map 结构本身。(注意:你只能改value) ```java import java.util.*; public class IteratorDemo { public static void main(String[] args) { // 创建一个HashMap实例 HashMap<String, Integer> scores = new HashMap<>(); // 初始化一些数据 scores.put("Alice", 90); scores.put("Bob", 85); // 获取entry set 并创建迭代器 Set<Map.Entry<String, Integer>> entries = scores.entrySet(); Iterator<Map.Entry<String, Integer>> it = entries.iterator(); while (it.hasNext()) { Map.Entry<String, Integer> entry = it.next(); String name = entry.getKey(); int score = entry.getValue(); System.out.println(name + " : " + score ); // 如果你想在这里更改某个特定key对应的value if ("Alice".equals(name)) { entry.setValue(95); // 更新 Alice 的分数为 95 分 } } // 输出最终结果 for(Map.Entry<String,Integer> e:scores.entrySet()){ System.out.println(e.getKey() +"="+e.getValue()); } } } ``` 在这个例子中,我们首先初始化了一个包含若干条目的哈希表 (`HashMap`) ,然后使用其 `entrySet()` 方法返回所有键-值对集合,并从中获得一个适合用于循环访问每个元素的迭代器对象。当需要对某些记录做改动时,可以直接通过对当前项(`entry`)调用 setValue 来完成而不必担心违反容器规则的问题。 请注意,在实际项目里,为了保证线程安全性以及避免潜在异常的发生,建议尽量减少边读取边修改的行为;如果确实存在这样的需求,则应当考虑采用更适合并发场景的数据结构如 ConcurrentHashMap 等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值