java使用Map映射遍历方法

java使用Map映射方法

代码讲解

1 相同参数 没有返回值

bath 复制代码
    使用 Map<Integer, Consumer<MqDeadLetterInventory>>
    -- Consumer 用来统一对象
    -- MqDeadLetterInventory参数类型
    -- .get 获取对象
    -- .accept 执行对象

2 相同参数 有返回值

bath 复制代码
    使用 Map<Integer, Function<MqDeadLetterInventory, Result>>
    -- Function 用来统一对象
    -- MqDeadLetterInventory参数类型
    -- Result 结果
    -- .get 获取对象
    -- .apply 执行对象, 执行之后会有返回结果 Result

3 更多场景.....

js 复制代码
其他 参数不同 等场景,自行根据需求处理

4 注意事项

js 复制代码
 Map.of()
    -- 参数不能为null;
    -- 数量不能超过10条;

业务使用

java 复制代码
private void handleResend(MqDeadLetterInventory deadLetter) {
    if (deadLetter == null || deadLetter.getQueueType() == null) {
        return;
    }

    // 映射:队列类型 -> 对应的发送逻辑
    Map<Integer, Consumer<MqDeadLetterInventory>> sendActionMap = Map.of(
            MqConstants.INVENTORY_SKU_QUEUE, inventorySkuMqService::sendInventorySkuMq,
            MqConstants.INVENTORY_WAREHOUSE_QUEUE, inventoryWarehouseMqService::sendInventoryWarehouseMq,
            MqConstants.INVENTORY_INVOICE_QUEUE, invoiceStockMqService::sendInvoiceStockMq,
            MqConstants.INVENTORY_LOCATION_QUEUE, locationInventoryMqService::sendInventoryLocationMq
    );

    Integer queueType = deadLetter.getQueueType();
    Consumer<MqDeadLetterInventory> sendAction = sendActionMap.get(queueType);

    if (sendAction == null) {
        log.warn("未知的队列类型: {}", queueType);
        return;
    }

    // 执行发送
    sendAction.accept(deadLetter);

    // 删除死信记录
    int res = mqDeadLetterInventoryMapper.deleteMqDeadLetterInventoryById(deadLetter.getId(), deadLetter.getTenantId());
    if (res <= 0) {
        throw new ServiceException("删除死信队列失败!");
    }
}
相关推荐
m0_5873830029 分钟前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
白山编程大哥31 分钟前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
一技安身2 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
七夜zippoe2 小时前
为什么 2026 年每个 Java 团队都该懂 AI Agent
java·开发语言·人工智能
时凌云.2 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
Despacito10062 小时前
Java后端性能探查工具速查表
java·开发语言
IT_陈寒2 小时前
Python的多线程就是个假把式,我算是体验到了
前端·人工智能·后端
码事漫谈2 小时前
如果 AI 要圈养人类,它可能不需要笼子
后端
蓝桉柒73 小时前
下载idea,用idea输入一个程序
java·ide·intellij-idea