List<Manipulate> a = new ArrayList<>();
a.add(new Manipulate(1,100));
a.add(new Manipulate(2,200));
List<Manipulate> b = new ArrayList<>();
b.add(new Manipulate(1,10));
b.add(new Manipulate(2,20));
我必须通过比较id来过滤这两个列表,并从a(100200(中减去b(10,20(,并仅使用java8将Maiopulate对象的列表存储到一些新列表中
List<Manipulate> c = a.stream().map(k -> {
b.stream().filter(j -> j.getId() == k.getId())
.forEach(i -> {
int i1 = k.getQuantity() - i.getQuantity();
k.setQuantity(i1);
});
return k;
});
穿透错误
Required type:
List
<Manipulate>
Provided:
Stream
<Object>
no instance(s) of type variable(s) R exist so that Stream<R> conforms to List<Manipulate>
您只是忘记将流收集回列表中。
List<Manipulate> c = a.stream().map(k -> {
b.stream().filter(j -> j.getId() == k.getId())
.forEach(i -> {
int i1 = k.getQuantity() - i.getQuantity();
k.setQuantity(i1);
});
return k;
}).collect(Collectors.toList());