工作看到一行代码不太了解,临时百度之,才知道是Java8的函数式编程。目前(2020.8.16)只有浅显的了解,记录。
(ruleConditionList = ArrayList<DiversionConditionModel>)
Map<Integer, DiversionConditionModel> map = ruleConditionList.stream()
.collect(Collectors.toMap(DiversionConditionModel::getConditionId, x -> x));
list.stream():把list变成流,以进行下一步操作。
collect():收集函数。
Collectors.toMap(a, b):将括号中的参数变成映射对。
DiversionConditionModel::getConditionId:在这里表示调用DiversionConditionModel.getConditionId(具体可百度双冒号的用法)。
x -> x:箭头函数比较常见,在这里等同于function(x) { return x }。
因此开始那行代码的大致意思是:
从ruleConditionList的流中逐个取出DiversionConditionModel,将其ConditionId作为key、DiversionConditionModel为value,组成一个个映射对,最后组成map。