从两个列表中筛选对象,并对属性进行减法运算,然后将其存储在Java8中的第三个列表中


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());

最新更新