我一直在寻找我需要做的事情的片段,但我无法将它们组合在一起。首先,这是我的目标,简单地说:
Object1
Object2
Map<String, Double>
我需要做的是,从 Object1
列表开始,为给定特定键的映射值获取 double[]
(所有对象在该列表在 map 中具有相同的 N 个键)。
这是我的开始尝试:
myList.stream().map(Object1::getObject2).map(Object2::getMyMap).map(m -> m.get(key).collect(Collectors.toCollection(ArrayList::new))
我不确定如何从这里到达原始数组。如果到目前为止一切顺利,我该从这里去哪里?如果有更好的方法来完成这整件事,我愿意接受建议。感谢您提供任何帮助,谢谢。
最佳答案
使用.mapToDouble
制作DoubleStream
:
myList.stream()
.map(Object1::getObject2)
.map(Object2::getMyMap)
.mapToDouble(m -> m.get(key)) // or throw if key is not in map
.toArray();
关于java - 将带有映射的对象列表转换为基元数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44378294/