我想使用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或其他单行程进行此转换吗?
答案 0 :(得分:13)
这应该可以解决问题:
objects.stream().map(MyObj::getId).collect(Collectors.toList());
表示,方法引用 ::
运算符允许您引用类路径中的任何方法,并将其用作lambda以进行所需的操作。
如评论中所述,流保留了订单。