Java8将对象列表转换为对象的一个​​属性列表

时间:2017-02-17 19:01:47

标签: java list lambda java-8 java-stream

我想使用Java 8技巧在一行中执行以下操作。

鉴于此对象定义:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class MyObj {
    private String id;
    private Double value;
}

List<MyObj> objects,我希望得到一个List<String> objectIds,它是第一个列表中所有id个对象的列表 - 按相同的顺序排列。

我可以使用Java中的循环来做到这一点,但我相信在Java8中应该有一个单行的lambda可以做到这一点。我无法在网上找到解决方案。也许我没有使用正确的搜索词。

有人可以建议使用lambda或其他单行程进行此转换吗?

1 个答案:

答案 0 :(得分:13)

这应该可以解决问题:

objects.stream().map(MyObj::getId).collect(Collectors.toList());

表示,方法引用 ::运算符允许您引用类路径中的任何方法,并将其用作lambda以进行所需的操作。

如评论中所述,流保留了订单。