在很多业务场景中我们可以用java8简化我们的代码:
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Auther: MR.rp
* @Date: 2021/10/27 12:08
* @Description:
*/
@ApiModel(description = "待发货的商品数量")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Goods {
@ApiModelProperty(value = "商品id")
private Integer goodsId;
@ApiModelProperty(value = "数量")
private Integer num;
}
@Test
public void test() {
//Goods 为实体类 属性:goodsId ,num
List<Goods> list1 = new ArrayList<>();//提交的数据
List<Goods> list2 = new ArrayList<>();//待发货
List<Goods> list3 = new ArrayList<>();//库存
list1.add(new Goods(1,3));
list1.add(new Goods(2,4));
list1.add(new Goods(3,2));
list1.add(new Goods(4,2));
list2.add(new Goods(1,1));
list2.add(new Goods(2,3));
list2.add(new Goods(3,3));
list2.add(new Goods(4,3));
list3.add(new Goods(1,3));//不充足
list3.add(new Goods(2,6));//不充足
list3.add(new Goods(3,6));
list3.add(new Goods(4,3));//不充足
Map<Integer, Integer> map = list2.stream().collect(Collectors.toMap(Goods::getGoodsId, Goods::getNum));//待发货
List<Goods> collect = list1.stream().filter(m1 -> list3.stream().anyMatch(
m2 -> m1.getGoodsId().equals(m2.getGoodsId()) && m1.getNum() > m2.getNum() - (map.get(m1.getGoodsId()) == null ? 0 : map.get(m1.getGoodsId()))
)).collect(Collectors.toList());
System.out.println(collect);
}
以上代码仅供参考