似乎无法做到这一点。我错过了什么?
发现了3个错误:文件:K:\ CustomerLister2.java [line:16]错误:方法长度() 未定义类型java.util.ArrayList文件:
K:\ CustomerLister2.java [line:18]错误:表达式的类型 必须是数组类型,但它已解析为
java.util.ArrayList文件:K:\ CustomerLister2.java [line:20]错误:表达式的类型必须是数组类型,但是 它解析为java.util.ArrayList
import java.util.ArrayList;
public class CustomerLister2 {
public static void main (String[] args) {
ArrayList<String> name = new ArrayList<String>();
name.add("Chris");
name.add("Lois");
name.add("Meg");
name.add("Meg");
name.add("Brain");
name.add("Peter");
name.add("Stewie");
for (int i = 0; i < name.length(); i++) {
if (name[i].equals("Meg")) {
name[i] = null;
break;
}
for(String names: name) {
System.out.println(names);
}
}
}
}
答案 0 :(得分:5)
对于java.util.ArrayList类型
,方法length()未定义
你想要:
for ( int i = 0; i < name.size(); i++){
表达式的类型必须是数组类型,但它已解析为java.util.ArrayList
你想要:
name.get(i)
和
name.remove(i);
name.set(i,"");
或者,您可以将其转换为数组:
String[] nameArray = name.toArray(new String[0]);
并使用nameArray
代替name
(和.legnth
代替.length()
)。
答案 1 :(得分:2)
如果要从Iterator
中删除项目,请使用ArrayList
,否则在尝试使用ConcurrentModificationException
循环迭代集合时删除元素时会发生for
for (Iterator<String> iter = name.iterator(); iter.hasNext();) {
if (iter.next().equals("Meg")) {
iter.remove();
}
}
答案 2 :(得分:1)
查看ArrayList javadoc。
String s = "Meg";
while(name.contains(s))
name.remove(s);