今天做的一道测试题出现的,觉得有必要记录一下,这里作简要说明;
题目和代码如下:
package com.itheima;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test2
{
/*
* 2、 一个ArrayList对象aList中存有若干个字符串元素,现欲遍历该ArrayList对象,
* 删除其中所有值为"abc"的字符串元素,请用代码实现。
* 分析:
* 1.创建集合对象;
* 2.向集合中添加元素;
* 3.遍历集合中的元素,并判断这个元素是否和"abc"相同,如果相同就删除
* 步骤:
* 1.创建ArrayList集合对象aList
* 2.使用add()方法添加元素
* 3.使用Iterator()方法遍历元素
* 4.使用equals方法判断元素是否和"abc"相同
* 5.相同就使用remove()方法删除该元素
*/
public static void main(String[] args)
{
//创建ArrayList集合对象aList
List<String> aList = new ArrayList<String>();
//添加元素
aList.add("abc");
aList.add("bcd");
aList.add("cde");
aList.add("abc");
//遍历集合中的元素并判断元素是否和"abc"相同
for(Iterator<String> it = aList.iterator();it.hasNext();)
{
if(it.next().equals("abc"))
{
it.remove();//这里使用it调用remove方法,如果使用aList调用就会报错
}
}
//输出删除后,集合中的元素
for(String str : aList)
{
System.out.println(str);
}
}
void | remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 |
删除集合中的元素,不能使用集合.remove(Object obj)删除,这样会出现java.util.ConcurrentModificationException
使用迭代器it.remove()可以避免这个问题
size(),length(),length的使用情况
size()用于获取集合中元素的个数
length()用于获取字符串长度
length用于获取数组的长度
他们的角标位都是从0开始,都不包含尾角标元素
在获取其对应角标最后的元素时,都要减去1:
str.charAt(length() - 1)
arr[arr.length-1]
list集合中的size()方法表示元素的个数,这里不用-1