【问题标题】:Java remove if condition don't work as it have to如果条件不能正常工作,则 Java 删除
【发布时间】:2021-09-23 13:59:57
【问题描述】:

可以有很少的计划和很少的关税。需要从计划中删除所有关税,当remove == N。尝试使用此代码执行此操作,但没有任何反应。我的意思是,我在控制台中调试并看到了remove is T,但代码无论如何都不会删除关税。如何修复删除?

    remove = "Y";
    List<Plan> plan = new ArrayList<Plan>();
    plan.addAll(plan2);
    
    for (int i = 0; i < plan.size(); i++) { 
        List<Tariff> tariff = new ArrayList<Tariff>();
        tariff.addAll(plan.get(i).getTariff());

        for (int j = 0; j < tariff.size(); j++) {  
            if(tariff.get(j).getCode().equals("N")) {
                remove = "N";
            }
        }
        plan.get(i).getTariff().removeIf(condition -> remove.equals("Y"));
    }

【问题讨论】:

  • condition -&gt; remove.equals("Y") 要么全部为真,要么全部为假。如果要删除所有内容,请使用.clear();如果你不想删除东西,就不要调用任何东西。
  • 你的问题不清楚。
  • 请解释您的用例。谢谢。

标签: java for-loop remove-if


【解决方案1】:

如果需要在任何费率有代码 == N 时从计划中删除所有费率,可以按如下方式进行:

List<Plan> cleaned = new ArrayList<>(plan2);

cleaned.stream()
    .filter(p -> p.getTariff().stream().anyMatch(t -> "N".equals(t.getCode())))
    .forEach(p -> p.getTariff().clear());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2017-11-30
    相关资源
    最近更新 更多