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

2022-09-03 10:06:49

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

给定此对象定义:

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

和 a ,我想得到一个,这是第一个列表中所有对象的列表 - 以相同的顺序。List<MyObj> objectsList<String> objectIdsid

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

有人能为这个转换建议一个lambda或其他单行线吗?


答案 1

这应该可以解决问题:

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

也就是说,方法引用运算符允许您引用类路径中的任何方法,并将其用作所需操作的 lambda。::

如注释中所述,流保留顺序。


答案 2