Search code examples
javajava-8java-stream

Java Iterate list inside list


I have a method resolver.calculateForDay(day, uuid) Dyas it is Enum and list of uuid.

public enum DaysOfWeekEnum {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}
List<String> uuidList = [
    "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"
]

Can you help me to implement a loop inside loop. What i have:

@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());

Have can i dynamically iterate uuidList because as you can see i hardcod the uuid in this example "c03b26e0-721e-3b57-9ffe-1b3709c4159e" and i don't know how to implement this

Expected call:

boolean calculateForDay(DaysOfWeekEnum type, String uuid)

resolver.calculateForDay(Monday, "c03b26e0-721e-3b57-9ffe-1b3709c4159e")  
resolver.calculateForDay(Monday, "223bfb41-8d2b-3555-86ee-7aa9c73fe223")  
resolver.calculateForDay(Monday, "d65e6239-d10d-3711-b76d-458290bcb76b")  
resolver.calculateForDay(Monday, "854acaa6-3166-3542-8511-c46a21ce4a5b")  
........
resolver.calculateForDay(Tuesday, "c03b26e0-721e-3b57-9ffe-1b3709c4159e")  
resolver.calculateForDay(Tuesday, "223bfb41-8d2b-3555-86ee-7aa9c73fe223")  
resolver.calculateForDay(Tuesday, "d65e6239-d10d-3711-b76d-458290bcb76b")  
resolver.calculateForDay(Tuesday, "854acaa6-3166-3542-8511-c46a21ce4a5b") 
........


Solution

  • You can flatMap the list of uuids:

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