无法从arraylist中删除此字符串

时间:2013-10-18 21:28:57

标签: java arrays arraylist

似乎无法做到这一点。我错过了什么?

发现了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);
            }
        }
    }
}

3 个答案:

答案 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);