2013-10-18 66 views
-3

似乎無法獲得此權限。我錯過了什麼?發現無法從陣列列表中刪除此字符串

3個錯誤:

File: K:\CustomerLister2.java [line: 16] Error: The method length() is undefined for the type java.util.ArrayList File:

K:\CustomerLister2.java [line: 18] Error: The type of the expression must be an array type but it resolved to

java.util.ArrayList File: K:\CustomerLister2.java [line: 20] Error: The type of the expression must be an array type but it resolved to 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); 
      } 
     } 
    } 
} 

回答

5

The method length() is undefined for the type java.util.ArrayList

你想:

for (int i = 0; i < name.size(); i++){ 

The type of the expression must be an array type but it resolved to java.util.ArrayList

你想:

name.get(i) 

name.remove(i); 
name.set(i,""); 

或者,你可以把它轉換成一個數組:

String[] nameArray = name.toArray(new String[0]); 

,並使用nameArray代替name(和.legnth而不是.length())。

1

查看ArrayList javadoc。

String s = "Meg"; 
while(name.contains(s)) 
    name.remove(s); 
2

,如果你想刪除從ArrayList項目,否則試圖刪除元素,同時使用for循環

for (Iterator<String> iter = name.iterator(); iter.hasNext();) { 
    if (iter.next().equals("Meg")) { 
     iter.remove(); 
    } 
} 
在集合迭代時 ConcurrentModificationException會發生使用的 Iterator