Java,如何过滤列表?

问题描述 投票:0回答:1
如果相应的ruleID是其中任何一个(ruleIdsToExclude =“Type1,Type2,Type3,Type4”),如何过滤/排除RuleDesc。如果ruleID与“Type1,Type2,Type3,Type4”匹配,如何排除ruleDesc

rulesList ArrayList [0] RuleType ruleDescr “test1” ruleID “Rule1” [1] Ruletype ruleDescr “test2” ruleID “Type2” [2] RuleType ruleDescr "test3" ruleID "Type3" [3] RuleType ruleDescr "test4" ruleID "Rule4" ruleList only contains test1 and test4 after excluding ruleID's Type2 and Type3.
private List<String> extractAlertsInfoList(RulesListType thisDetailRulesList) {
    List<String> alertsInfoList = new ArrayList<>();
    if (thisDetailRulesList != null && CollectionUtils.isNotEmpty(thisDetailRulesList.getRule())) {
List<RuleType> rulesList = thisDetailRulesList.getRule();

for (RuleType thisRule : rulesList) {
     String ruleId = thisRule.getRuleID().toString().trim();
     String ruleIdsToExclude = "Type1,Type2,Type3,Type4";
   if (isValidRuleDescription(thisRule.getRuleDesc()) ) {
    alertsInfoList.add(thisRule.getRuleDesc());
                    }
               }
           }
         return alertsInfoList;
       }

       private boolean isValidRuleDescription(String ruleDesc) {        
           return ruleDesc != null && !ruleDesc.isEmpty();
       }
谢谢

java spring-boot arraylist
1个回答
0
投票
您可以使用

Stream<T> filter(Predicate<? super T> predicate)


List<String> toExclude = Arrays.asList("Type1,Type2,Type3,Type4".split(",")); List<RuleType> filteredList = thisDetailRulesList.getRule() .stream() .filter(rr -> !toExclude.contains(rr.getID())) .toList();
    
© www.soinside.com 2019 - 2024. All rights reserved.