java数据处理:Map<String, Object>、Map<String, List<Room>>、Map<String, Integer>

发布于:2025-03-17 ⋅ 阅读:(20) ⋅ 点赞:(0)

已知数据都存在WargameConfig.HallMap里。

一、Map<String, Integer>

需求:按照scenarioName进行分类,统计每种scenarioName下的Room对象有多少;
思路:统计一个名为WargameConfig.HallMap的集合中,每个不同场景名称(scenarioName)出现的次数。返回一个键值对映射(Map<String, Integer>),其中键是场景名称,值是该名称出现的次数。

    @Override
    public Map<String, Integer> getScenarioNameCounts() {
   
     	// 1. 创建一个空的HashMap,用于存储场景名称及其出现次数
        Map<String, Integer> scenarioNameCounts = new HashMap<>();
         // 2. 遍历WargameConfig.HallMap中的每一个键值对(房间ID与Room对象)
        for (Map.Entry<String, Room> entry : WargameConfig.HallMap.entrySet()) {
   
        	// 3. 处理每个 entry,获取当前遍历到的Room对象
            Room room = entry.getValue();
            // 4. 从Room对象中提取场景名称(scenarioName)
            String scenarioName = room.getScenarioName();
            // 5. 更新统计:将当前场景名称的计数加1
            scenarioNameCounts.put(scenarioName, scenarioNameCounts.getOrDefault(scenarioName, 0) + 1);
        }
        return scenarioNameCounts;
    }

关键
(1)entrySet():返回 Map 中所有键值对的集合,将 HallMap 转换为 Set<Map.Entry<String, Room>> 集合,每个元素是 Map.Entry<String, Room> 类型。
(2)Map.Entry :表示键值对:Map.Entry 是 Map 接口的静态内部接口,用于封装单个键值对实体。Map.Entry<String, Room>:表示一个键值对实体,包含 getKey() 和 getValue()和setValue() 方法。

 使用 entrySet 遍历,直接通过 Map.Entry 获取键和值
// 方式1:entrySet()(推荐)
for (Map.Entry<String, Room> entry : map.entrySet()) {
   
    String key = entry.getKey();
    Room value = entry.getValue()</