You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中实现枚举与UUID列表的嵌套循环方法调用

实现枚举与UUID列表的嵌套遍历调用并收集结果

需求说明

遍历DaysOfWeekEnum的所有枚举值,对每个枚举值再遍历uuidList中的每个UUID,依次调用resolver.calculateForDay(day, uuid)方法,收集所有返回的Boolean结果,替换原代码中硬编码单个UUID的逻辑。

给定定义

枚举类型

public enum DaysOfWeekEnum {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

UUID列表

List<String> uuidList = List.of(
    "c03b26e0-721e-3b57-9ffe-1b3709c4159e",
    "223bfb41-8d2b-3555-86ee-7aa9c73fe223",
    "d65e6239-d10d-3711-b76d-458290bcb76b",
    "854acaa6-3166-3542-8511-c46a21ce4a5b",
    "0a3e1588-ad59-3586-b071-d5001f5ff9a7",
    "e5524b9b-3aca-3b80-9aab-19bfec30fb9b",
    "1dbd3cd0-8382-3736-a9bd-f2cc78187dad",
    "63d29aeb-ab91-3d24-b40c-d69f2955a893",
    "a63ffce5-1d86-3afc-8b5a-97452f935632",
    "f62e1509-845b-3ac4-b85b-7648f675496d",
    "6ed7a21e-22a3-39a0-a83c-734e35625c67",
    "1edfbf51-36ff-34a6-9036-cfbd2ce8451e",
    "ac33181d-59bc-3b17-88fe-26fd10584bb6",
    "56e8e85d-e2e8-3419-8cfe-831acdbede84",
    "3f45f239-f137-3f7c-a45c-b0bf40b4de37",
    "b9aef79d-0397-320e-a393-db346b9496b4",
    "fd6ee25b-1768-3d81-8a22-f4410b0cce6f",
    "b349f0ea-c810-3790-bdc3-a82ed5921a28",
    "c4164cc5-1371-3ecb-a6d1-9f8d49531189"
);

现有代码(存在硬编码问题)

@Autowired
private final DaysResolver resolver;

List<Boolean> collect = Stream.of(DaysOfWeekEnum.values())
    .map(days -> resolver.calculateForDay(days, "c03b26e0-721e-3b57-9ffe-1b3709c4159e"))
    .collect(Collectors.toList());

解决方案

方式一:使用Stream API实现嵌套遍历

利用flatMap将每个枚举值转换为对应所有UUID的调用流,最终合并所有结果:

@Autowired
private final DaysResolver resolver;

List<Boolean> collect = Stream.of(DaysOfWeekEnum.values())
    .flatMap(day -> uuidList.stream()
        .map(uuid -> resolver.calculateForDay(day, uuid)))
    .collect(Collectors.toList());

方式二:传统嵌套循环实现

如果更习惯命令式编程,用嵌套循环遍历并收集结果:

@Autowired
private final DaysResolver resolver;

List<Boolean> collect = new ArrayList<>();
for (DaysOfWeekEnum day : DaysOfWeekEnum.values()) {
    for (String uuid : uuidList) {
        collect.add(resolver.calculateForDay(day, uuid));
    }
}

两种方式都会按照Monday对应所有UUID、Tuesday对应所有UUID……的顺序执行调用,并收集所有返回的Boolean结果。

内容的提问来源于stack exchange,提问作者Romillion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:32:04