ArrayLIst集合遍历中CPU暴增

在语句if “b”.equalslist.geti– 中,错吧geti写成了geti–,在运行时cpu飙到快100%。
按照ArrayList的索引遍历集合,当i从0开始时,经过get(i–)后,在remove(i–)处,相当于remove(-1),那么为什么不报错呢?使用的是eclipse

 public static void mainString[] args { ArrayList<String> list = new ArrayList<>; list.add"a"; list.add"b"; list.add"b"; list.add"c"; list.add"d"; //1. 普通for循环删除集合元素 for int i = 0 ; i < list.size;i++ { if "b".equalslist.geti-- { //错把 geti 写为geti-- list.removei--; System.out.println"已经删除b"; } } System.out.printlnlist; 

for int i = 0 ; i < list.size;i++ { if "b".equalslist.geti-- { //list.geti--值为a,执行完以后i的值为-1,在下一个循环中加上步长,i又变成0 list.removei--; // 永远没有机会执行 System.out.println"已经删除b"; }
}

i永等于0,进入无限循环了。for循环无法结束。

list里面remove元素,要反着来,不能用i++,貌似要用i–的方式

i在0和1之间无限循环

发表评论

电子邮件地址不会被公开。 必填项已用*标注