ArrayList set()方法问题

glimmert 2016-11-24 10:33:19

public static void delete(String next, ArrayList<String> al) {

for(Iterator<String> it=al.iterator();it.hasNext();){
String line=it.next();
int i=line.indexOf(next);
if(i>=0){
line=line.substring(0, i)+line.substring(i+next.length());
al.set(i, line);
System.out.println("删除成功");
break;
}else{
System.out.println("没有找到指定 的字符串");
}
}

}


然后是这个问题

private void rangeCheck(int index) {
if (index >= size)
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

我就想删除ArrayList对象al的相应位置的一段字符串,出现这个问题百度了好久,不知道该怎么改了,麻烦大家看看~ 谢谢!~
...全文
238 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
别闹了费曼sir 2016-11-28
  • 打赏
  • 举报
回复
爱睡觉的阿狸 2016-11-28
  • 打赏
  • 举报
回复
第八行有问题,你的i是你next字符串在List元素中匹配到的位置,他有很大可能性比List的长度长。 看一下set方法的源码,你会发现,它会先调用rangeCheck方法,而rangeCheck就是检查你所操作的list集合的元素位置是否比集合长度大,如果是的话,就会抛出异常。
glimmert 2016-11-28
  • 打赏
  • 举报
回复
ArrayList类不是可以自动改变大小,自适应的吗?
XxiaoxiaoL 2016-11-25
  • 打赏
  • 举报
回复
你这个不是删除,你这个找到匹配的替换。int i=line.indexOf(next);         if(i>=0){             line=line.substring(0, i)+line.substring(i+next.length());             al.set(i, line);你的这个i是字符串的i,不是ArrayList的位置,i很可能大于ArrayList的长度了

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧