我正在迭代一个列表并将其内容放在地图上,但问题是,当我返回该地图时,我遇到了异常,您能否告知其背后的原因是什么..我收到了 java.lang.IndexOutOfBoundsException :索引:100,大小:100,因为我的列表大小是 100
for(Map.Entry<Long, Integer> entries : result.entrySet()) {
pairList.add(new Pair(entries.getKey(), entries.getValue()));
}
int sum = 0;
int min = -1;
int max = -1;
int i = 0;
Pair p = pairList.get(i);
@SuppressWarnings("rawtypes")
//Iterator iterator = pairList.iterator();
Iterator iterator = pairList.listIterator();
while (iterator.hasNext()) {
if(sum == 0){
min = (int) p.key;
max = (int) p.key;
}
sum += p.value;
if(sum < BARRIER) {
max = (int) p.key;
} else {
if(sum > BARRIER) {
i--;
} else {
max = (int) p.key;
}
System.out.println(min+"_"+max);
result1.put(min,max);
sum = 0;
}
i++;
p = pairList.get(i);
}
System.out.println("#########");
System.out.println(result1.size());
for (Map.Entry<Integer, Integer> entry : result1.entrySet()) {
System.out.println(entry.getKey() + "/" + entry.getValue());
}
请大家指教如何克服这个问题
数组是零索引的。例如100 个元素的数组实际上有效索引范围为 [0,99]。我假设这发生在线路上p = pairList.get(i);
您需要实现一些逻辑以确保您没有超越界限。您已经在使用迭代器来迭代pairList
,这可以保护你免受这种情况的影响,但你也混合了索引i
,这违背了迭代器的目的。
至少,在尝试访问元素之前进行检查。就像是:
if (i >= pairList.size())
break;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)