add & foreach (remove)

http://www.2cto.com/kf/201403/286536.html

foreach 就是用来遍历读取的。其他操作最好都用for循环,对于列表而言,如果有remove,则遍历时候要对i-1.例如,列表第二个被删后,i等于3了,下次要读取第三个,但是由于2被删了,原来的3已经补位成为2了,此时实际读取的将是原来的4,也就是会漏掉原来的3.

i-1是一种解决方法,还有一种是可以在循环的时候把要删除的元素标记,最后统一删除。

通过foreach 循环对数组或列表赋值是没有意义的。因为它并不会改变原数组的值。因为,当使用foreac来迭代访问数组元素时,foreach中的循环变量相当于一个临时变量,系统会把数组元素依次赋值给这个临时变量,而这个临时变量并不是数组元素,它只是保存了数组元素的值。因此,如果希望改变数组元素的值,则不能使用foreach这种循环。

在foreach中对列表进行增删操作会抛出异常:ConcurrentModificationException
这与foreach的底层实现有关。

关于add返回的boolean值:这个布尔值是和collection规则有关的。
比如:对于集合而言,给它添加一个已有的元素,是添加不进去的,此时将会返回false。
remove返回的也是Boolean值,其大体意思和add也差不多。

你可能感兴趣的:(java)