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

Set<Long>内部循环取值错误 如何正确遍历取对应ArrayList值

错误原因
  • Set是无序不支持下标访问的集合,你用values_set.size()(值为4)作为第二层循环的上限,本质是让j的最大取值为3,用这个下标去访问有10个元素的values列表,得到的结果和values_set的元素范围完全无关
  • 你混淆了values的下标和values_set存储的元素值,两层遍历目标都是values_set内的元素时,不能直接用元素值当下标遍历
  • 额外语法注意:Java中ArrayList不能用[]按下标取值,需要调用get()方法
正确实现

场景1:第二层循环遍历values_set中排在当前元素之后的所有元素(用于两两组合等场景)

首先将Set转为有序列表,再通过下标遍历:

// 先把Set转为有序列表,固定元素顺序
List<Long> setList = new ArrayList<>(values_set);
for (int i = 0; i < setList.size(); i++) {
    Long currentVal = setList.get(i);
    // 第二层从i+1开始,遍历当前元素之后的所有Set内元素
    for (int j = i + 1; j < setList.size(); j++) {
        Long targetVal = setList.get(j);
        // 如果需要取values中对应下标的值,再调用get方法
        Long res = values.get(targetVal.intValue());
    }
}

场景2:第二层循环取values里下标大于当前元素值、且下标属于values_set的元素

直接遍历values_set做值筛选即可:

for (Long currentVal : values_set) {
    int currentId = currentVal.intValue();
    for (Long targetVal : values_set) {
        // 筛选出大于当前值的元素
        if (targetVal > currentId) {
            Long res = values.get(targetVal.intValue());
        }
    }
}

内容的提问来源于stack exchange,提问作者Carles Sastre Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:09:02