将带有map的对象列表转换为基元数组

时间:2017-06-05 21:53:45

标签: java lambda java-8 java-stream

我一直在寻找我需要做的事情,但是我把它放在一起很麻烦。首先,这是我的目标,简单地说:

Object1
    Object2
        Map<String, Double>

我需要做的是,从Object1列表开始,在给定特定键的情况下获取double[]地图的值(列表中的所有对象具有相同的N个键)地图)。

这是我的首次尝试:

myList.stream().map(Object1::getObject2).map(Object2::getMyMap).map(m -> m.get(key).collect(Collectors.toCollection(ArrayList::new))

我不确定如何从这里获取原始数组。如果到目前为止这是好的,我从哪里开始?如果有更好的方法来做这件事,我可以接受建议。感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:7)

使用DoubleStream制作myList.stream() .map(Object1::getObject2) .map(Object2::getMyMap) .mapToDouble(m -> m.get(key)) // or throw if key is not in map .toArray();

Table A:
ID  |   DATE_CREATED

Table B:
ID  |   DATE_CREATED

TABLE C:
ID  |   DATE_CREATED