You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何用单个for循环遍历动态选择的ArrayList

解决方法:通过预定义目标列表实现单循环筛选

你可以先根据条件确定要遍历的目标列表,再对这个列表执行一次循环完成筛选,这样就能去掉重复的循环代码,只用一个for循环实现需求:

修改后的代码

private void filter(String searchText) {
    ArrayList<Card> searchList = new ArrayList<>();

    // 先根据条件确定要遍历的目标列表
    List<Card> targetList = smallList != null && !smallList.isEmpty() ? smallList : mainList;

    // 对目标列表执行单次循环筛选
    for (Card cardItem : targetList) {
        if (cardItem.getInfo().contains(searchText)) {
            searchList.add(cardItem);
        }
    }
    ...
}

额外优化:处理mainList为空的情况

如果mainList也存在为null或空列表的可能,建议增加判空逻辑避免空指针异常:

private void filter(String searchText) {
    ArrayList<Card> searchList = new ArrayList<>();

    List<Card> targetList;
    // 优先选择非空的smallList,否则检查mainList是否有效
    if (smallList != null && !smallList.isEmpty()) {
        targetList = smallList;
    } else if (mainList != null && !mainList.isEmpty()) {
        targetList = mainList;
    } else {
        // 两个列表都为空,直接返回空结果
        return;
    }

    for (Card cardItem : targetList) {
        if (cardItem.getInfo().contains(searchText)) {
            searchList.add(cardItem);
        }
    }
    ...
}

逻辑说明

  • 先通过条件判断把smallList或mainList赋值给统一的targetList变量
  • 后续只需要对targetList执行一次循环,完成包含搜索文本的Card筛选
  • 这种写法分离了「列表选择」和「筛选逻辑」,减少了重复代码,更易维护

内容的提问来源于stack exchange,提问作者AJW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 00:44:52