asList返回的列表不是ArrayList – 它不支持修改.
你需要这样做
public static List wordsWithoutList(String[] words, int len) {
List l = new ArrayList( Arrays.asList(words) );
for( Iterator iter = l.iterator(); iter.hasNext(); ){
String str = iter.next();
if(str.length()==len){
iter.remove();
}
}
return l;
}
所以有两件事:
>使用ArrayList构造函数创建asList返回的数组的可修改副本.
>使用迭代器的remove来避免ConcurrentModificationException.
有人指出,这可能效率低下,因此更好的选择是:
List l = new ArrayList(str.length());
// ^^ initial capacity optional
for( String str : words )
if( str.length()!=len)
l.add(str);
return l;