java8有关steam的问题?

 class A{
Integer id;
String name;//省略get和set方法
}

如果有一个List list,请问怎样才能使用java8的stream将list中每个元素的id提取出来并生成List?不需要过滤任何元素。

哈哈,我喜欢回答Java8的问题,这样的哈

 List<A> list = new ArrayList<>();
 List<Integer> ids = list.stream().map(A::getId).collect(Collectors.toList());

很好写,也易读,A::getId是用了方法引用,你也可以直接这么写a -> a.getId(),但是有方法引用写起来很优雅点

List transactionsIds = transactions.parallelStream().
filter(t -> t.getType() == Transaction.GROCERY).
sorted(comparing(Transaction::getValue).reversed()).
map(Transaction::getId).
collect(toList());
应该是这样

用map就行了

 public class Demo {
    public static void main(String[] args) {
        List<A> list = new ArrayList<>();
        list.add(new A(1,"a"));
        list.add(new A(2,"a"));
        list.add(new A(3,"a"));
        list.add(new A(4,"a"));

        List<Integer> newList = list.parallelStream().map(A::getId)
                .collect(Collectors.toList());
        System.out.println(newList);
    }
}
class A{
    Integer id;
    String name;

    public A(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}