将Java7迁移到Java8-forEach中的forEach,以获得HashMap中的HashMap?
我的java7代码:将Java7迁移到Java8-forEach中的forEach,以获得HashMap中的HashMap?,java,arrays,lambda,java-8,Java,Arrays,Lambda,Java 8,我的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(
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()));
}
}
我尝试使用stream+map
试试这个:
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
});
fusionedData.entrySet().stream().map(Map.Entry::getValue)...???
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());
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
});