миграция Java 7 на Java 8 - forEach в forEach для HashMap в HashMap? - PullRequest
0 голосов
/ 27 сентября 2019

Мой код java7:

int dataIndex = 0;
final List<DataIndex> indexData = new ArrayList<>();
for (final Entry<Integer, Map<String, ModelList>> e : fusionedData.entrySet()) {
    for (final Entry<String, ModelList> e2 : e.getValue().entrySet()) {
        dataIndex++;
        indexData.add(new DataIndex(dataIndex, e2.getValue().getIds()));
    }
}

Я пытаюсь с forEach:

fusionedData.forEach(entry -> { ...??? })

Я пытаюсь с stream + map

fusionedData.entrySet().stream().map(Map.Entry::getValue)...???

Ответы [ 3 ]

1 голос
/ 27 сентября 2019
AtomicInteger dataIndex = new AtomicInteger();
final List<DataIndex> indexData = fusionedData.values().stream()
    .flatMap(models-> models.values().stream()) // Stream<ModelList>
    .map(ModelList::getIds)
    .map(ids -> new DataIndex(dataIndex.incrementAndGet(), ids))
    .collect(Collectors.toList());
1 голос
/ 27 сентября 2019

Попробуйте это:

Map<Integer, Map<Integer, ModelList>> fusionedData;
fusionedData.values() // Collection<Map<Integer, ModelList>
        .stream() // Stream<Map<Integer, ModelList>>
        .flatMap(map -> map.values().stream()) // Stream<ModelList>
        .forEach(value -> {
            // here value is instance of ModelList
            // do something with that
        });
0 голосов
/ 27 сентября 2019

Попробуйте

your_map.forEach((k, v) -> System.out.println(k + " => " + v));

См. еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...