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;
}
}