Java Lambda 表达式删除列表元素:详解代码逻辑
这段代码使用了Java 8的Lambda表达式和Stream API来执行删除操作。代码的执行过程如下:
- 'ruleList.removeIf(...)' 方法表示对 'ruleList' 列表进行删除操作,删除的条件是满足该 Lambda 表达式中的条件。
- Lambda 表达式 '(rule -> ...)' 中的 'rule' 表示 'ruleList' 列表中的每一个元素。
- 'rule.getAlarmType() != alarmType' 判断 'rule' 的 'alarmType' 是否与给定的 'alarmType' 不相等,如果不相等,则删除该元素。
- '!rule.isEnable()' 判断 'rule' 的 'enable' 属性是否为 'false',如果为 'false',则删除该元素。
- '!CollectionUtils.containsAny(rule.getPoolResourceIdSet(), alarmMap.get(BaseDeviceAlarm.RESOURCE_POOL_RESOURCE_ID).toString())' 判断 'rule' 的 'poolResourceIdSet' 是否不包含 'alarmMap' 中 'BaseDeviceAlarm.RESOURCE_POOL_RESOURCE_ID' 对应的值,如果不包含,则删除该元素。
- '!CollectionUtils.containsAny(rule.getDeviceTypeSet(), alarmMap.get(BaseDeviceAlarm.RSRC_TYPE))' 判断 'rule' 的 'deviceTypeSet' 是否不包含 'alarmMap' 中 'BaseDeviceAlarm.RSRC_TYPE' 对应的值,如果不包含,则删除该元素。
- '!CollectionUtils.containsAny(rule.getLvSet(), alarmMap.get(BaseDeviceAlarm.LV).toString())' 判断 'rule' 的 'lvSet' 是否不包含 'alarmMap' 中 'BaseDeviceAlarm.LV' 对应的值,如果不包含,则删除该元素。
- 'Objects.equals(rule.getNotificationType(), NotificationType.EMAIL.getTypeId())' 判断 'rule' 的 'notificationType' 是否与 'NotificationType.EMAIL.getTypeId()' 相等,如果相等,则删除该元素。
综上所述,根据上述条件,将不满足条件的元素从 'ruleList' 列表中删除。
原文地址: https://www.cveoy.top/t/topic/qfX2 著作权归作者所有。请勿转载和采集!